From eee89ee9c14da89078d7df189a2ad00a51f004be Mon Sep 17 00:00:00 2001 From: hg <none@none> Date: Wed, 23 Jul 2014 15:24:19 +0200 Subject: [PATCH] OO-1146 make notification email on login-block state optional --- .../user/SystemRolesAndRightsController.java | 2 +- .../olat/admin/user/SystemRolesAndRightsForm.java | 13 +++++++++++++ .../admin/user/_i18n/LocalStrings_de.properties | 4 +++- .../admin/user/_i18n/LocalStrings_en.properties | 6 ++++-- .../user/bulkChange/UserBulkChangeManager.java | 2 +- .../user/bulkChange/UserBulkChangeStep01.java | 15 +++++++++++++++ 6 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/olat/admin/user/SystemRolesAndRightsController.java b/src/main/java/org/olat/admin/user/SystemRolesAndRightsController.java index 9b9f411dc4f..483901f1ed4 100644 --- a/src/main/java/org/olat/admin/user/SystemRolesAndRightsController.java +++ b/src/main/java/org/olat/admin/user/SystemRolesAndRightsController.java @@ -195,7 +195,7 @@ public class SystemRolesAndRightsController extends BasicController { : (newStatus == Identity.STATUS_DELETED ? "deleted" : "unknown")))); - if(newStatus == Identity.STATUS_LOGIN_DENIED) { + if(oldStatus != newStatus && newStatus == Identity.STATUS_LOGIN_DENIED && form.getSendLoginDeniedEmail()) { UserBulkChangeManager.getInstance().sendLoginDeniedEmail(myIdentity); } diff --git a/src/main/java/org/olat/admin/user/SystemRolesAndRightsForm.java b/src/main/java/org/olat/admin/user/SystemRolesAndRightsForm.java index 6a737ff0655..f4b4a6d8c1e 100644 --- a/src/main/java/org/olat/admin/user/SystemRolesAndRightsForm.java +++ b/src/main/java/org/olat/admin/user/SystemRolesAndRightsForm.java @@ -36,6 +36,7 @@ import org.olat.basesecurity.SecurityGroup; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; import org.olat.core.gui.components.form.flexible.elements.SelectionElement; import org.olat.core.gui.components.form.flexible.elements.SingleSelection; import org.olat.core.gui.components.form.flexible.elements.SpacerElement; @@ -65,6 +66,7 @@ public class SystemRolesAndRightsForm extends FormBasicController { private SpacerElement rolesSep; private SpacerElement sysSep; private SingleSelection statusRE; + private MultipleSelectionElement sendLoginDeniedEmailCB; private Identity identity; private boolean iAmOlatAdmin, isAdmin, isUserManager, isAuthor, isGroupManager, isPoolManager, isGuestOnly, isInstitutionalResourceManager; @@ -255,6 +257,10 @@ public class SystemRolesAndRightsForm extends FormBasicController { statusRE.setEnabled(status != Identity.STATUS_DELETED); } + public boolean getSendLoginDeniedEmail() { + return sendLoginDeniedEmailCB.isSelected(0); + } + private void setRole (String k, boolean tf) { if (roleKeys.contains(k)) RolesSE.select(k, tf); } @@ -278,7 +284,10 @@ public class SystemRolesAndRightsForm extends FormBasicController { if (source == AnonymousRE) { RolesSE.setVisible(!isAnonymous()); rolesSep.setVisible(!isAnonymous()); + } else if (source == statusRE && iAmOlatAdmin) { + sendLoginDeniedEmailCB.setVisible(statusRE.isSelected(2)); } + } @Override @@ -310,9 +319,13 @@ public class SystemRolesAndRightsForm extends FormBasicController { statusKeys.toArray(new String[statusKeys.size()]), statusValues.toArray(new String[statusKeys.size()]) ); + statusRE.addActionListener(this, FormEvent.ONCHANGE); + sendLoginDeniedEmailCB = uifactory.addCheckboxesHorizontal("rightsForm.sendLoginDeniedEmail", formLayout, new String[]{"y"}, new String[]{translate("rightsForm.sendLoginDeniedEmail")}, null); + sendLoginDeniedEmailCB.setLabel(null, null); rolesSep.setVisible(iAmOlatAdmin); statusRE.setVisible(iAmOlatAdmin); + sendLoginDeniedEmailCB.setVisible(false); FormLayoutContainer buttonGroupLayout = FormLayoutContainer.createButtonLayout("buttonGroupLayout", getTranslator()); formLayout.add(buttonGroupLayout); diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_de.properties index 610698fc597..5134aabe892 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_de.properties @@ -48,7 +48,7 @@ header.normal=Suche mit Benutzerattributen help.hover.rightsForm-eff=Hilfe zu den Systemrollen mailto.userlist=Liste der Benutzer mailtemplate.login.denied.subject=Deaktivierung ihres OpenOLAT Accounts -mailtemplate.login.denied.body=Sehr geehrte/r {6} {4},\n\nIhr OpenOLAT Account {0} mit der E-Mail {1} auf dem System {5} wurde deaktiviert.\n\nWenn Sie möchten, dass der Account wieder aktiviert wird, dann melden Sie sich bitte beim Support unter {3}.\n\n\nViele Grüsse\nDas elearning Team +mailtemplate.login.denied.body=Sehr geehrte/r {6} {4},\n\nIhr OpenOLAT Account {0} mit der E-Mail {1} auf dem System {5} wurde deaktiviert.\n\nWenn Sie möchten, dass der Account wieder aktiviert wird, dann melden Sie sich bitte beim Support unter {3}.\n\n\nViele Grüsse\nDas e-Learning Team msg.selectionempty=Bitte min. einen User ausw\u00E4hlen. new.error.email.choosen=Diese E-Mail-Adresse ist bereits vorhanden, Sie k\u00F6nnen f\u00FCr diese Person kein neues Benutzerkonto erstellen. Es wurden keine Daten gespeichert. new.error.loginname.choosen=Dieser Benutzername ist bereits vergeben. Versuchen Sie es mit einem anderen Benutzernamen. @@ -89,12 +89,14 @@ rightsForm.status.deleted=Gel\u00F6scht rightsForm.status.login_denied=Login gesperrt rightsForm.status.permanent=Aktiv und nicht l\u00F6schbar rightsForm.title=Systemrollen und Rechte zuteilen +rightsForm.sendLoginDeniedEmail=Benutzer über Loginsperre informieren search.cancel=Die Aktion wurde abgebrochen. search.form.afterDate=Benutzer erstellt nach search.form.beforeDate=Benutzer erstellt vor search.form.constraint.admin=Systemadministrator search.form.constraint.auth.OLAT=OLAT/WebDAV-Passwort search.form.constraint.auth.Shib=Shibboleth-Passwort +search.form.constraint.auth.ShibGeneric=$\:search.form.constraint.auth.Shib search.form.constraint.auth.LDAP=LDAP-Passwort search.form.constraint.auth.WEBDAV=WebDAV-Passwort search.form.constraint.auth.none=Ohne Authentifizierung diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_en.properties index ad1b492bdda..e38f8b2249e 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_en.properties @@ -50,8 +50,8 @@ found.property=Property selected {0} header.autocompletion=Search combined with auto-completion header.normal=Search along with user attributes help.hover.rightsForm-eff=Help regarding system roles and rights -mailtemplate.login.denied.body=Your OpenOLAT account {0} with the email address {1} is blocked.\n\n\nIf you do not agree with this change, please contact support immediately at {3}. -mailtemplate.login.denied.subject=OpenOLAT Account blocked +mailtemplate.login.denied.body=Dear {6} {4},\n\nyour OpenOLAT account {0} with the email address {1} on system {5} has been blocked.\n\n\nIf you want to re-activate your account, please contact support at {3}\n\n\nBest regards\nThe e-learning team +mailtemplate.login.denied.subject=OpenOLAT account blocked mailto.userlist=List of users msg.selectionempty=Please select at least one user. new.error.email.choosen=This e-mail address already exists. There is no need to create another account for this user. No data saved. @@ -93,6 +93,7 @@ rightsForm.status.deleted=Deleted rightsForm.status.login_denied=Login denied rightsForm.status.permanent=Active and not deletable rightsForm.title=Assign system roles and rights +rightsForm.sendLoginDeniedEmail=Notify user about login denied change search.cancel=Action cancelled. search.form.afterDate=User created after search.form.beforeDate=User created before @@ -100,6 +101,7 @@ search.form.constraint.admin=Administrator search.form.constraint.auth.LDAP=LDAP password search.form.constraint.auth.OLAT=OLAT/WebDAV password search.form.constraint.auth.Shib=Shibboleth password +search.form.constraint.auth.ShibGeneric=$\:search.form.constraint.auth.Shib search.form.constraint.auth.WEBDAV=WebDAV password search.form.constraint.auth.none=No authentication search.form.constraint.author=Author diff --git a/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeManager.java b/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeManager.java index 1f17324854a..b879d23e605 100644 --- a/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeManager.java +++ b/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeManager.java @@ -221,7 +221,7 @@ public class UserBulkChangeManager extends BasicManager { : (status == Identity.STATUS_LOGIN_DENIED ? "login_denied" : (status == Identity.STATUS_DELETED ? "deleted" : "unknown")))); - if(status == Identity.STATUS_LOGIN_DENIED) { + if(oldStatus != status && status == Identity.STATUS_LOGIN_DENIED && Boolean.parseBoolean(roleChangeMap.get("sendLoginDeniedEmail"))) { sendLoginDeniedEmail(identity); } identity = secMgr.saveIdentityStatus(identity, status); diff --git a/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeStep01.java b/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeStep01.java index 3c3e6480f90..de5b8012eb4 100644 --- a/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeStep01.java +++ b/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeStep01.java @@ -103,6 +103,7 @@ class UserBulkChangeStep01 extends BasicStep { private SingleSelection setAdmin; private MultipleSelectionElement chkStatus; private SingleSelection setStatus; + private MultipleSelectionElement sendLoginDeniedEmail; public UserBulkChangeStepForm01(UserRequest ureq, WindowControl control, Form rootForm, StepsRunContext runContext) { super(ureq, control, rootForm, runContext, LAYOUT_VERTICAL, null); @@ -146,6 +147,10 @@ class UserBulkChangeStep01 extends BasicStep { if (chkStatus!=null && chkStatus.getSelectedKeys().contains("Status")) { roleChangeMap.put("Status", setStatus.getSelectedKey()); + // also check dependent send-email checkbox + if (sendLoginDeniedEmail!=null) { + roleChangeMap.put("sendLoginDeniedEmail", Boolean.toString(sendLoginDeniedEmail.isSelected(0))); + } validChange = true; } @@ -267,10 +272,20 @@ class UserBulkChangeStep01 extends BasicStep { setStatus = uifactory.addDropdownSingleselect("setStatus",null, innerFormLayout, statusKeys, statusValues, null); setStatus.setVisible(false); + setStatus.addActionListener(listener, FormEvent.ONCHANGE); targets = new HashSet<FormItem>(); targets.add(setStatus); RulesFactory.createHideRule(chkStatus, null, targets, innerFormLayout); RulesFactory.createShowRule(chkStatus, "Status", targets, innerFormLayout); + + sendLoginDeniedEmail = uifactory.addCheckboxesHorizontal("rightsForm.sendLoginDeniedEmail", innerFormLayout, new String[]{"y"}, new String[]{translate("rightsForm.sendLoginDeniedEmail")}, null); + sendLoginDeniedEmail.setLabel(null, null); + sendLoginDeniedEmail.setVisible(false); + RulesFactory.createHideRule(chkStatus, null, sendLoginDeniedEmail, innerFormLayout); + RulesFactory.createHideRule(setStatus, Integer.toString(Identity.STATUS_ACTIV), sendLoginDeniedEmail, innerFormLayout); + RulesFactory.createHideRule(setStatus, Integer.toString(Identity.STATUS_PERMANENT), sendLoginDeniedEmail, innerFormLayout); + RulesFactory.createShowRule(setStatus, Integer.toString(Identity.STATUS_LOGIN_DENIED), sendLoginDeniedEmail, innerFormLayout); + } } -- GitLab