Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/UserOrganisation.hbm.xml
===================================================================
RCS file: /usr/local/cvsroot/lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/UserOrganisation.hbm.xml,v
diff -u -r1.6 -r1.7
--- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/UserOrganisation.hbm.xml 12 Nov 2007 23:30:47 -0000 1.6
+++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/UserOrganisation.hbm.xml 11 Nov 2008 08:43:04 -0000 1.7
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/commonContext.xml,v
diff -u -r1.68 -r1.69
--- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml 4 Nov 2008 05:15:31 -0000 1.68
+++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml 11 Nov 2008 08:43:04 -0000 1.69
@@ -98,6 +98,7 @@
+
@@ -340,6 +341,10 @@
+
+
+
+
Fisheye: Tag 1.9 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 1.10 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
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java,v
diff -u -r1.57 -r1.58
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java 17 Sep 2008 07:08:18 -0000 1.57
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java 11 Nov 2008 08:43:04 -0000 1.58
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/LdapService.java,v
diff -u -r1.13 -r1.14
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/LdapService.java 10 Nov 2008 02:02:59 -0000 1.13
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/LdapService.java 11 Nov 2008 08:43:04 -0000 1.14
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java,v
diff -u -r1.94 -r1.95
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java 26 Sep 2008 07:04:55 -0000 1.94
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java 11 Nov 2008 08:43:04 -0000 1.95
@@ -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