Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/UserOrganisation.hbm.xml
===================================================================
diff -u -r07578aaa7f526c0c1b537c127cf5f88e0410d472 -r48eb3881563dc0f2576c2df926f47a75424e1e84
--- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/UserOrganisation.hbm.xml (.../UserOrganisation.hbm.xml) (revision 07578aaa7f526c0c1b537c127cf5f88e0410d472)
+++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/UserOrganisation.hbm.xml (.../UserOrganisation.hbm.xml) (revision 48eb3881563dc0f2576c2df926f47a75424e1e84)
@@ -103,4 +103,15 @@
+
+
+
+ SELECT {userOrganisation.*}
+ FROM lams_user_organisation {userOrganisation}, lams_organisation o
+ WHERE {userOrganisation}.user_id = :userId
+ AND {userOrganisation}.organisation_id != :orgId
+ AND o.organisation_id = {userOrganisation}.organisation_id
+ AND o.parent_organisation_id != :orgId
+
+
Index: lams_common/src/java/org/lamsfoundation/lams/commonContext.xml
===================================================================
diff -u -rbb419b22571ecd3406c59785cd4d8bc899938ca4 -r48eb3881563dc0f2576c2df926f47a75424e1e84
--- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision bb419b22571ecd3406c59785cd4d8bc899938ca4)
+++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision 48eb3881563dc0f2576c2df926f47a75424e1e84)
@@ -98,6 +98,7 @@
+
@@ -340,6 +341,10 @@
+
+
+
+
Fisheye: Tag 6633f5d5c7844c27582a9b323fead87fac99dfd5 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IUserOrganisationDAO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 6633f5d5c7844c27582a9b323fead87fac99dfd5 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationDAO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java
===================================================================
diff -u -rc2a96caab480d04c02dc7a90e719fc0bb9af6a50 -r48eb3881563dc0f2576c2df926f47a75424e1e84
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision c2a96caab480d04c02dc7a90e719fc0bb9af6a50)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 48eb3881563dc0f2576c2df926f47a75424e1e84)
@@ -489,4 +489,13 @@
* @return
*/
public ForgotPasswordRequest getForgotPasswordRequest(String key);
+
+ /**
+ * Remove given user from groups other than the specified one. Doesn't remove
+ * user from subgroups of the specified group if any.
+ * @param userId
+ * @param orgId
+ * @return number of deleted rows.
+ */
+ public int removeUserFromOtherGroups(Integer userId, Integer orgId);
}
\ No newline at end of file
Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/LdapService.java
===================================================================
diff -u -r60b4757cf25429b45747670da240442c677e9dd1 -r48eb3881563dc0f2576c2df926f47a75424e1e84
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/LdapService.java (.../LdapService.java) (revision 60b4757cf25429b45747670da240442c677e9dd1)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/LdapService.java (.../LdapService.java) (revision 48eb3881563dc0f2576c2df926f47a75424e1e84)
@@ -325,19 +325,7 @@
}
// if the user is a member of any other groups, remove them
if (Configuration.getAsBoolean(ConfigurationKeys.LDAP_ONLY_ONE_ORG)) {
- List uos = service.findByProperty(UserOrganisation.class, "user", user);
- if (uos != null) {
- for (Object obj : uos) {
- UserOrganisation uo = (UserOrganisation) obj;
- Organisation currentOrg = uo.getOrganisation();
- if (currentOrg.getOrganisationType().getOrganisationTypeId().equals(
- OrganisationType.COURSE_TYPE)) {
- if (!currentOrg.equals(org)) {
- service.deleteUserOrganisation(user, currentOrg);
- }
- }
- }
- }
+ service.removeUserFromOtherGroups(userId, org.getOrganisationId());
}
// now convert the roles to lams roles and add the user to the
// org
@@ -520,8 +508,7 @@
break;
}
} else {
- log
- .error("Couldn't find login attribute for user using attribute name: "
+ log.error("Couldn't find login attribute for user using attribute name: "
+ Configuration.get(ConfigurationKeys.LDAP_LOGIN_ATTR)
+ ". Dumping attributes...");
NamingEnumeration enumAttrs = attrs.getAll();
Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java
===================================================================
diff -u -r183737e7a950da43f140416a8ec09018c20aec08 -r48eb3881563dc0f2576c2df926f47a75424e1e84
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 183737e7a950da43f140416a8ec09018c20aec08)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 48eb3881563dc0f2576c2df926f47a75424e1e84)
@@ -52,6 +52,7 @@
import org.lamsfoundation.lams.usermanagement.WorkspaceWorkspaceFolder;
import org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO;
import org.lamsfoundation.lams.usermanagement.dao.IRoleDAO;
+import org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO;
import org.lamsfoundation.lams.usermanagement.dto.CollapsedOrgDTO;
import org.lamsfoundation.lams.usermanagement.dto.OrganisationDTO;
import org.lamsfoundation.lams.usermanagement.dto.OrganisationDTOFactory;
@@ -92,6 +93,7 @@
private IGroupDAO groupDAO;
private IRoleDAO roleDAO;
private IOrganisationDAO organisationDAO;
+ private IUserOrganisationDAO userOrganisationDAO;
protected MessageService messageService;
private static IAuditService auditService;
@@ -132,6 +134,10 @@
public void setOrganisationDAO(IOrganisationDAO organisationDAO) {
this.organisationDAO = organisationDAO;
}
+
+ public void setUserOrganisationDAO(IUserOrganisationDAO userOrganisationDAO) {
+ this.userOrganisationDAO = userOrganisationDAO;
+ }
public void save(Object object) {
try{
@@ -1122,4 +1128,10 @@
List results = baseDAO.findByProperty(ForgotPasswordRequest.class,"requestKey",key);
return results.isEmpty() ? null : (ForgotPasswordRequest)results.get(0);
}
+
+ public int removeUserFromOtherGroups(Integer userId, Integer orgId) {
+ List uos = userOrganisationDAO.userOrganisationsNotById(userId, orgId);
+ deleteAll(uos);
+ return uos.size();
+ }
}
\ No newline at end of file