Index: lams_admin/conf/language/lams/ApplicationResources.properties
===================================================================
diff -u -r7e8d8f6da0288d69a0b816900e9cdd1ca4244f92 -r6a414b5f0f7756f0376670914c59c84b9ae916ef
--- lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 7e8d8f6da0288d69a0b816900e9cdd1ca4244f92)
+++ lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 6a414b5f0f7756f0376670914c59c84b9ae916ef)
@@ -416,6 +416,8 @@
admin.themes.flash =Flash
label.html.htmlTheme =HTML Theme
label.html.flashTheme =Flash Theme
+config.profile.edit.enable = Enable Profile Editing
+config.profile.partial.edit.enable = Enable Partial Profile Editing
#======= End labels: Exported 409 labels for en AU =====
Index: lams_admin/conf/language/lams/ApplicationResources_en_AU.properties
===================================================================
diff -u -r7e8d8f6da0288d69a0b816900e9cdd1ca4244f92 -r6a414b5f0f7756f0376670914c59c84b9ae916ef
--- lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 7e8d8f6da0288d69a0b816900e9cdd1ca4244f92)
+++ lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 6a414b5f0f7756f0376670914c59c84b9ae916ef)
@@ -416,6 +416,8 @@
admin.themes.flash =Flash
label.html.htmlTheme =HTML Theme
label.html.flashTheme =Flash Theme
+config.profile.edit.enable = Enable Profile Editing
+config.profile.partial.edit.enable = Enable Partial Profile Editing
#======= End labels: Exported 409 labels for en AU =====
Index: lams_central/conf/language/lams/ApplicationResources.properties
===================================================================
diff -u -r7b89a024a3408d102799244f2f6fbceb03f34ed1 -r6a414b5f0f7756f0376670914c59c84b9ae916ef
--- lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 7b89a024a3408d102799244f2f6fbceb03f34ed1)
+++ lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 6a414b5f0f7756f0376670914c59c84b9ae916ef)
@@ -274,6 +274,8 @@
label.html.htmlTheme =HTML Theme
label.html.flashTheme =Flash Theme
error.password.empty = New password cannot be empty.
+error.edit.disabled = Profile editing is disabled.
+message.partial.edit.only = Only contact fields are editable due to server configuration.
#======= End labels: Exported 268 labels for en AU =====
Index: lams_central/conf/language/lams/ApplicationResources_en_AU.properties
===================================================================
diff -u -r7b89a024a3408d102799244f2f6fbceb03f34ed1 -r6a414b5f0f7756f0376670914c59c84b9ae916ef
--- lams_central/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 7b89a024a3408d102799244f2f6fbceb03f34ed1)
+++ lams_central/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 6a414b5f0f7756f0376670914c59c84b9ae916ef)
@@ -274,6 +274,8 @@
label.html.htmlTheme =HTML Theme
label.html.flashTheme =Flash Theme
error.password.empty = New password cannot be empty.
+error.edit.disabled = Profile editing is disabled.
+message.profile.partially.edited = Profile has only been partially updated due to server configuration.
#======= End labels: Exported 268 labels for en AU =====
Index: lams_central/src/java/org/lamsfoundation/lams/web/ProfileAction.java
===================================================================
diff -u -ra23376f298830f9cb4d3d18e5dc7ef11b907c173 -r6a414b5f0f7756f0376670914c59c84b9ae916ef
--- lams_central/src/java/org/lamsfoundation/lams/web/ProfileAction.java (.../ProfileAction.java) (revision a23376f298830f9cb4d3d18e5dc7ef11b907c173)
+++ lams_central/src/java/org/lamsfoundation/lams/web/ProfileAction.java (.../ProfileAction.java) (revision 6a414b5f0f7756f0376670914c59c84b9ae916ef)
@@ -36,6 +36,8 @@
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
+import org.apache.struts.action.ActionMessage;
+import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.DynaActionForm;
import org.lamsfoundation.lams.index.IndexLessonBean;
import org.lamsfoundation.lams.index.IndexOrgBean;
@@ -194,6 +196,16 @@
public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
+ ActionMessages errors = new ActionMessages();
+ if (!Configuration.getAsBoolean(ConfigurationKeys.PROFILE_EDIT_ENABLE)) {
+ if (!Configuration.getAsBoolean(ConfigurationKeys.PROFILE_PARTIAL_EDIT_ENABLE)) {
+ errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.edit.disabled"));
+ } else {
+ errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("message.partial.edit.only"));
+ }
+ saveErrors(request, errors);
+ }
+
User requestor = (User) getService().getUserByLogin(request.getRemoteUser());
DynaActionForm userForm = (DynaActionForm) form;
BeanUtils.copyProperties(userForm, requestor);
Index: lams_central/src/java/org/lamsfoundation/lams/web/ProfileSaveAction.java
===================================================================
diff -u -r7998a31f6d7d4f1eef3e866bafef22caa012eb7a -r6a414b5f0f7756f0376670914c59c84b9ae916ef
--- lams_central/src/java/org/lamsfoundation/lams/web/ProfileSaveAction.java (.../ProfileSaveAction.java) (revision 7998a31f6d7d4f1eef3e866bafef22caa012eb7a)
+++ lams_central/src/java/org/lamsfoundation/lams/web/ProfileSaveAction.java (.../ProfileSaveAction.java) (revision 6a414b5f0f7756f0376670914c59c84b9ae916ef)
@@ -40,11 +40,12 @@
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.DynaActionForm;
-import org.hibernate.Hibernate;
import org.lamsfoundation.lams.themes.Theme;
import org.lamsfoundation.lams.usermanagement.SupportedLocale;
import org.lamsfoundation.lams.usermanagement.User;
import org.lamsfoundation.lams.usermanagement.service.IUserManagementService;
+import org.lamsfoundation.lams.util.Configuration;
+import org.lamsfoundation.lams.util.ConfigurationKeys;
import org.lamsfoundation.lams.web.session.SessionManager;
import org.lamsfoundation.lams.web.util.AttributeNames;
import org.springframework.web.context.WebApplicationContext;
@@ -78,15 +79,22 @@
}
ActionMessages errors = new ActionMessages();
+
+ if (!Configuration.getAsBoolean(ConfigurationKeys.PROFILE_EDIT_ENABLE)) {
+ if (!Configuration.getAsBoolean(ConfigurationKeys.PROFILE_PARTIAL_EDIT_ENABLE)) {
+ return mapping.findForward("editprofile");
+ }
+ }
+
User requestor = (User) getService().getUserByLogin(request.getRemoteUser());
DynaActionForm userForm = (DynaActionForm) form;
// check requestor is same as user being edited
- log.debug("requestor: " + requestor.getLogin() + ", form login: " + userForm.get("login"));
if (!requestor.getLogin().equals(userForm.get("login"))) {
+ log.warn(requestor.getLogin() + " tried to edit profile of user " + userForm.get("login"));
errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.authorisation"));
saveErrors(request, errors);
- return (mapping.getInputForward());
+ return mapping.findForward("editprofile");
}
// (dyna)form validation
@@ -111,27 +119,35 @@
return (mapping.findForward("editprofile"));
}
- BeanUtils.copyProperties(requestor, userForm);
- SupportedLocale locale = (SupportedLocale) getService().findById(SupportedLocale.class,
- (Integer) userForm.get("localeId"));
- requestor.setLocale(locale);
+ if (!Configuration.getAsBoolean(ConfigurationKeys.PROFILE_EDIT_ENABLE)
+ && Configuration.getAsBoolean(ConfigurationKeys.PROFILE_PARTIAL_EDIT_ENABLE)) {
+ // update only contact fields
+ requestor.setEmail(userForm.getString("email"));
+ requestor.setDayPhone(userForm.getString("dayPhone"));
+ requestor.setEveningPhone(userForm.getString("eveningPhone"));
+ requestor.setMobilePhone(userForm.getString("mobilePhone"));
+ requestor.setFax(userForm.getString("fax"));
+ } else {
+ // update all fields
+ BeanUtils.copyProperties(requestor, userForm);
+ SupportedLocale locale = (SupportedLocale) getService().findById(SupportedLocale.class,
+ (Integer) userForm.get("localeId"));
+ requestor.setLocale(locale);
- Theme cssTheme = (Theme) getService().findById(Theme.class,
- (Long) userForm.get("userCSSTheme"));
- requestor.setHtmlTheme(cssTheme);
-
- Theme flashTheme = (Theme) getService().findById(Theme.class,
- (Long) userForm.get("userFlashTheme"));
- requestor.setFlashTheme(flashTheme);
+ Theme cssTheme = (Theme) getService().findById(Theme.class, (Long) userForm.get("userCSSTheme"));
+ requestor.setHtmlTheme(cssTheme);
- if (userForm.get("disableLamsCommunityUsername") != null
- && (Boolean) userForm.get("disableLamsCommunityUsername")) {
- requestor.setLamsCommunityToken(null);
- requestor.setLamsCommunityUsername(null);
+ Theme flashTheme = (Theme) getService().findById(Theme.class, (Long) userForm.get("userFlashTheme"));
+ requestor.setFlashTheme(flashTheme);
+
+ if (userForm.get("disableLamsCommunityUsername") != null
+ && (Boolean) userForm.get("disableLamsCommunityUsername")) {
+ requestor.setLamsCommunityToken(null);
+ requestor.setLamsCommunityUsername(null);
+ }
}
getService().save(requestor);
- log.debug("profile edited: " + requestor);
// replace UserDTO in the shared session
HttpSession ss = SessionManager.getSession();
Index: lams_central/web/editprofile.jsp
===================================================================
diff -u -r7998a31f6d7d4f1eef3e866bafef22caa012eb7a -r6a414b5f0f7756f0376670914c59c84b9ae916ef
--- lams_central/web/editprofile.jsp (.../editprofile.jsp) (revision 7998a31f6d7d4f1eef3e866bafef22caa012eb7a)
+++ lams_central/web/editprofile.jsp (.../editprofile.jsp) (revision 6a414b5f0f7756f0376670914c59c84b9ae916ef)
@@ -19,6 +19,8 @@