rolesList);
/**
* Returns list of roles suitable for the given orgType.
@@ -377,4 +378,26 @@
* @return
*/
public Integer getCountRoleForSystem(Integer roleId);
+
+ /**
+ * Get default flash theme of server.
+ * @return default flash theme object
+ */
+ public CSSThemeVisualElement getDefaultFlashTheme();
+
+ /**
+ * Get default html theme of server.
+ * @return default html theme object
+ */
+ public CSSThemeVisualElement getDefaultHtmlTheme();
+
+ /**
+ * Get default server locale.
+ * @return server default supported locale object
+ */
+ public SupportedLocale getDefaultLocale();
+
+ public void auditPasswordChanged(User user, String moduleName);
+
+ public void auditUserCreated(User user, String moduleName);
}
\ No newline at end of file
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.75 -r1.75.4.1
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java 23 May 2007 00:51:44 -0000 1.75
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java 18 Sep 2007 07:20:53 -0000 1.75.4.1
@@ -38,6 +38,7 @@
import org.apache.log4j.Logger;
import org.lamsfoundation.lams.dao.IBaseDAO;
import org.lamsfoundation.lams.learningdesign.dao.IGroupDAO;
+import org.lamsfoundation.lams.themes.CSSThemeVisualElement;
import org.lamsfoundation.lams.usermanagement.Organisation;
import org.lamsfoundation.lams.usermanagement.OrganisationType;
import org.lamsfoundation.lams.usermanagement.Role;
@@ -54,10 +55,17 @@
import org.lamsfoundation.lams.usermanagement.dto.UserDTO;
import org.lamsfoundation.lams.usermanagement.dto.UserFlashDTO;
import org.lamsfoundation.lams.usermanagement.dto.UserManageBean;
+import org.lamsfoundation.lams.util.Configuration;
+import org.lamsfoundation.lams.util.ConfigurationKeys;
import org.lamsfoundation.lams.util.HashUtil;
import org.lamsfoundation.lams.util.MessageService;
+import org.lamsfoundation.lams.util.audit.AuditService;
+import org.lamsfoundation.lams.util.audit.IAuditService;
import org.lamsfoundation.lams.web.session.SessionManager;
import org.lamsfoundation.lams.web.util.AttributeNames;
+import org.lamsfoundation.lams.web.util.HttpSessionManager;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.WebApplicationContextUtils;
/**
*
@@ -81,6 +89,15 @@
private IGroupDAO groupDAO;
private IRoleDAO roleDAO;
protected MessageService messageService;
+ private static IAuditService auditService;
+
+ private IAuditService getAuditService() {
+ if (auditService == null) {
+ WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(HttpSessionManager.getInstance().getServletContext());
+ auditService = (IAuditService) ctx.getBean("auditService");
+ }
+ return auditService;
+ }
/**
* Set i18n MessageService
@@ -332,17 +349,20 @@
Organisation organisation = (Organisation)baseDAO.find(Organisation.class,organisationID);
if (organisation != null) {
- Iterator iterator = organisation.getUserOrganisations().iterator();
- while (iterator.hasNext()) {
- UserOrganisation userOrganisation = (UserOrganisation) iterator.next();
- Iterator userOrganisationRoleIterator = userOrganisation.getUserOrganisationRoles().iterator();
- while (userOrganisationRoleIterator.hasNext()) {
- UserOrganisationRole userOrganisationRole = (UserOrganisationRole) userOrganisationRoleIterator.next();
- if (userOrganisationRole.getRole().getName().equals(roleName))
- if(isFlashCall)
- users.add(userOrganisation.getUser().getUserFlashDTO());
- else
- users.add(userOrganisation.getUser().getUserDTO());
+ Set uos = organisation.getUserOrganisations();
+ if (uos != null) {
+ Iterator iterator = uos.iterator();
+ while (iterator.hasNext()) {
+ UserOrganisation userOrganisation = (UserOrganisation) iterator.next();
+ Iterator userOrganisationRoleIterator = userOrganisation.getUserOrganisationRoles().iterator();
+ while (userOrganisationRoleIterator.hasNext()) {
+ UserOrganisationRole userOrganisationRole = (UserOrganisationRole) userOrganisationRoleIterator.next();
+ if (userOrganisationRole.getRole().getName().equals(roleName))
+ if(isFlashCall)
+ users.add(userOrganisation.getUser().getUserFlashDTO());
+ else
+ users.add(userOrganisation.getUser().getUserDTO());
+ }
}
}
}
@@ -482,6 +502,7 @@
Organisation pOrg = organisation.getParentOrganisation();
// set parent's child orgs
Set children = pOrg.getChildOrganisations();
+ if (children==null) children = new HashSet();
children.add(organisation);
pOrg.setChildOrganisations(children);
// get course managers and give them staff role in this new class
@@ -647,10 +668,22 @@
/**
* (non-Javadoc)
- * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setRolesForUserOrganisation(org.lamsfoundation.lams.usermanagement.User, org.lamsfoundation.lams.usermanagement.Organisation, java.util.List)
+ * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setRolesForUserOrganisation(org.lamsfoundation.lams.usermanagement.User, java.lang.Integer, java.util.List)
*/
- public void setRolesForUserOrganisation(User user, Organisation org, List rolesList) {
+ public void setRolesForUserOrganisation(User user, Integer organisationId, List rolesList) {
+
+ // Don't pass in the org from the web layer. The import for roles doesn't use the HIbernate open session
+ // filter, so it may throw a lazy loading exception when it tried to access the org.UserOrganisations set
+ // if org has come from the web layer.
+ Organisation org = (Organisation) findById(Organisation.class, organisationId);
+ setRolesForUserOrganisation(user, org, rolesList);
+ }
+
+ private void setRolesForUserOrganisation(User user, Organisation org, List rolesList) {
+ // The private version of setRolesForUserOrganisation can pass around the org safely as we are within
+ // our transation, so no lazy loading errors. This is more efficient for recursive calls to this method.
+
UserOrganisation uo = getUserOrganisation(user.getUserId(), org.getOrganisationId());
if (uo == null) {
uo = new UserOrganisation(user, org);
@@ -861,4 +894,37 @@
else
return new Integer(0);
}
+
+ public CSSThemeVisualElement getDefaultFlashTheme() {
+ String flashName = Configuration.get(ConfigurationKeys.DEFAULT_FLASH_THEME);
+ List list = findByProperty(CSSThemeVisualElement.class, "name", flashName);
+ return (list!=null ? (CSSThemeVisualElement)list.get(0) : null);
+ }
+
+ public CSSThemeVisualElement getDefaultHtmlTheme() {
+ String htmlName = Configuration.get(ConfigurationKeys.DEFAULT_HTML_THEME);
+ List list = findByProperty(CSSThemeVisualElement.class, "name", htmlName);
+ return (list!=null ? (CSSThemeVisualElement)list.get(0) : null);
+ }
+
+ public SupportedLocale getDefaultLocale() {
+ String localeName = Configuration.get(ConfigurationKeys.SERVER_LANGUAGE);
+ return getSupportedLocale(localeName.substring(0,2),localeName.substring(3));
+ }
+
+ public void auditPasswordChanged(User user, String moduleName) {
+ String[] args = new String[1];
+ args[0] = user.getLogin() + "(" + user.getUserId() + ")";
+ String message = messageService.getMessage("audit.user.password.change", args);
+ getAuditService().log(moduleName, message);
+ }
+
+ public void auditUserCreated(User user, String moduleName) {
+ String[] args = new String[2];
+ args[0] = user.getLogin() + "(" + user.getUserId() + ")";
+ args[1] = user.getFullName();
+ String message = messageService.getMessage("audit.user.create", args);
+ getAuditService().log(moduleName, message);
+ }
+
}
\ No newline at end of file
Fisheye: Tag 1.2.10.1 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/util/AuthEntityResolver.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_common/src/java/org/lamsfoundation/lams/util/ConfigurationKeys.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/ConfigurationKeys.java,v
diff -u -r1.24 -r1.24.4.1
--- lams_common/src/java/org/lamsfoundation/lams/util/ConfigurationKeys.java 9 May 2007 01:07:22 -0000 1.24
+++ lams_common/src/java/org/lamsfoundation/lams/util/ConfigurationKeys.java 18 Sep 2007 07:20:50 -0000 1.24.4.1
@@ -134,4 +134,56 @@
public static String LAMS_COMMUNITY_ENABLE = "LAMS_Community_enable";
public static String ALLOW_EDIT_ON_FLY = "AllowLiveEdit";
+
+ public static String LDAP_PROVISIONING_ENABLED = "LDAPProvisioningEnabled";
+
+ public static String LDAP_PROVIDER_URL = "LDAPProviderURL";
+
+ public static String LDAP_SECURITY_AUTHENTICATION = "LDAPSecurityAuthentication";
+
+ public static String LDAP_PRINCIPAL_DN_PREFIX = "LDAPPrincipalDNPrefix";
+
+ public static String LDAP_PRINCIPAL_DN_SUFFIX = "LDAPPrincipalDNSuffix";
+
+ public static String LDAP_SECURITY_PROTOCOL = "LDAPSecurityProtocol";
+
+ public static String LDAP_TRUSTSTORE_PATH = "LDAPTruststorePath";
+
+ public static String LDAP_TRUSTSTORE_PASSWORD = "LDAPTruststorePassword";
+
+ public static String LDAP_LOGIN_ATTR = "LDAPLoginAttr";
+
+ public static String LDAP_FIRST_NAME_ATTR = "LDAPFNameAttr";
+
+ public static String LDAP_LAST_NAME_ATTR = "LDAPLNameAttr";
+
+ public static String LDAP_EMAIL_ATTR = "LDAPEmailAttr";
+
+ public static String LDAP_PHONE_ATTR = "LDAPPhoneAttr";
+
+ public static String LDAP_FAX_ATTR = "LDAPFaxAttr";
+
+ public static String LDAP_MOBILE_ATTR = "LDAPMobileAttr";
+
+ public static String LDAP_ORG_ATTR = "LDAPOrgAttr";
+
+ public static String LDAP_ROLES_ATTR = "LDAPRolesAttr";
+
+ public static String LDAP_LEARNER_MAP = "LDAPLearnerMap";
+
+ public static String LDAP_MONITOR_MAP = "LDAPMonitorMap";
+
+ public static String LDAP_AUTHOR_MAP = "LDAPAuthorMap";
+
+ public static String LDAP_GROUP_ADMIN_MAP = "LDAPGroupAdminMap";
+
+ public static String LDAP_GROUP_MANAGER_MAP = "LDAPGroupManagerMap";
+
+ public static String LDAP_UPDATE_ON_LOGIN = "LDAPUpdateOnLogin";
+
+ public static String LDAP_ORG_FIELD = "LDAPOrgField";
+
+ public static String LDAP_ONLY_ONE_ORG = "LDAPOnlyOneOrg";
+
+ public static String LDAP_ENCRYPT_PASSWORD_FROM_BROWSER = "LDAPEncryptPasswordFromBrowser";
}
\ No newline at end of file
Index: lams_common/src/java/org/lamsfoundation/lams/util/audit/AuditService.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/audit/AuditService.java,v
diff -u -r1.3 -r1.3.10.1
--- lams_common/src/java/org/lamsfoundation/lams/util/audit/AuditService.java 17 Sep 2006 06:14:22 -0000 1.3
+++ lams_common/src/java/org/lamsfoundation/lams/util/audit/AuditService.java 18 Sep 2007 07:20:52 -0000 1.3.10.1
@@ -72,15 +72,23 @@
if ( ss != null ) {
UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER);
if ( user != null ) {
- return user.getLogin()+"("+user.getUserID()+"): ";
+ return getUserString(user);
}
}
- return "User unknown (session does not contain user details): ";
+ return "System Generated (No Current User): ";
}
+
+ private String getUserString(UserDTO userDTO) {
+ return userDTO.getLogin()+"("+userDTO.getUserID()+"): ";
+ }
public void log(String moduleName, String message) {
logger.info(getUserString()+moduleName+": "+message);
}
+
+ public void log(UserDTO userDTO, String moduleName, String message) {
+ logger.info(getUserString(userDTO)+moduleName+": "+message);
+ }
public void logChange(String moduleName, Long originalUserId, String originalUserLogin,
String originalText, String newText) {
Index: lams_common/src/java/org/lamsfoundation/lams/util/audit/IAuditService.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/audit/IAuditService.java,v
diff -u -r1.3 -r1.3.10.1
--- lams_common/src/java/org/lamsfoundation/lams/util/audit/IAuditService.java 17 Sep 2006 06:14:22 -0000 1.3
+++ lams_common/src/java/org/lamsfoundation/lams/util/audit/IAuditService.java 18 Sep 2007 07:20:52 -0000 1.3.10.1
@@ -24,6 +24,8 @@
package org.lamsfoundation.lams.util.audit;
+import org.lamsfoundation.lams.usermanagement.dto.UserDTO;
+
/** Public interface for a service that writes audit records */
public interface IAuditService {
@@ -33,6 +35,15 @@
* @param message message to be logged
*/
public void log(String moduleName, String message);
+
+ /**
+ * Same as above, but logs message using given userDTO instead of current session DTO.
+ * Useful when importing users in a separate thread which isn't linked to main session.
+ * @param userDTO
+ * @param moduleName
+ * @param message
+ */
+ public void log(UserDTO userDTO, String moduleName, String message);
/**
* Log a data change. The username, date, moduleName and change details are recorded in the audit log.