diff --git a/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVAuthManager.java b/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVAuthManager.java index 1a37ffb703c8df140d24805fba89129e6a964765..32a612f91776795a3c89f6b81335ce484f3006d5 100644 --- a/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVAuthManager.java +++ b/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVAuthManager.java @@ -185,12 +185,12 @@ public class WebDAVAuthManager implements AuthenticationSPI { private void updateWebdavPassword(Identity doer, Identity identity, String password, List<Authentication> authentications) { updateWebDAVPassword(doer, identity, identity.getName(), password, PROVIDER_WEBDAV, authentications); - if(StringHelper.containsNonWhitespace(identity.getUser().getEmail())) { + if(userModule.isEmailUnique() && StringHelper.containsNonWhitespace(identity.getUser().getEmail())) { updateWebDAVPassword(doer, identity, identity.getUser().getEmail(), password, PROVIDER_WEBDAV_EMAIL, authentications); } else { removePassword(PROVIDER_WEBDAV_EMAIL, authentications); } - if(StringHelper.containsNonWhitespace(identity.getUser().getInstitutionalEmail())) { + if(userModule.isEmailUnique() && StringHelper.containsNonWhitespace(identity.getUser().getInstitutionalEmail())) { updateWebDAVPassword(doer, identity, identity.getUser().getInstitutionalEmail(), password, PROVIDER_WEBDAV_INSTITUTIONAL_EMAIL, authentications); } else { removePassword(PROVIDER_WEBDAV_INSTITUTIONAL_EMAIL, authentications); @@ -247,18 +247,16 @@ public class WebDAVAuthManager implements AuthenticationSPI { private void updateDigestPasswords(Identity doer, Identity identity, String newPwd, List<Authentication> authentications) { updateDigestPassword(doer, identity, identity.getName(), newPwd, PROVIDER_HA1, authentications); - - if (userModule.isEmailUnique()) { - if(StringHelper.containsNonWhitespace(identity.getUser().getEmail())) { - updateDigestPassword(doer, identity, identity.getUser().getEmail(), newPwd, PROVIDER_HA1_EMAIL, authentications); - } else { - removePassword(PROVIDER_HA1_EMAIL, authentications); - } - if(StringHelper.containsNonWhitespace(identity.getUser().getInstitutionalEmail())) { - updateDigestPassword(doer, identity, identity.getUser().getInstitutionalEmail(), newPwd, PROVIDER_HA1_INSTITUTIONAL_EMAIL, authentications); - } else { - removePassword(PROVIDER_HA1_INSTITUTIONAL_EMAIL, authentications); - } + + if(userModule.isEmailUnique() && StringHelper.containsNonWhitespace(identity.getUser().getEmail())) { + updateDigestPassword(doer, identity, identity.getUser().getEmail(), newPwd, PROVIDER_HA1_EMAIL, authentications); + } else { + removePassword(PROVIDER_HA1_EMAIL, authentications); + } + if(userModule.isEmailUnique() && StringHelper.containsNonWhitespace(identity.getUser().getInstitutionalEmail())) { + updateDigestPassword(doer, identity, identity.getUser().getInstitutionalEmail(), newPwd, PROVIDER_HA1_INSTITUTIONAL_EMAIL, authentications); + } else { + removePassword(PROVIDER_HA1_INSTITUTIONAL_EMAIL, authentications); } for(Authentication authentication:authentications) { diff --git a/src/main/java/org/olat/user/WebDAVPasswordController.java b/src/main/java/org/olat/user/WebDAVPasswordController.java index 0527c7a643d1726949e1929b592ce6930e72f62f..89fab88f9dde6e339c486f7cfd1273b84cdb66a7 100644 --- a/src/main/java/org/olat/user/WebDAVPasswordController.java +++ b/src/main/java/org/olat/user/WebDAVPasswordController.java @@ -62,10 +62,13 @@ public class WebDAVPasswordController extends FormBasicController { private FormLink newButton; private TextElement passwordEl; private TextElement confirmPasswordEl; + private StaticTextElement usernamesStaticEl; private StaticTextElement passwordStaticEl; private FormLayoutContainer accessDataFlc; private FormLayoutContainer buttonGroupLayout; + @Autowired + private UserModule userModule; @Autowired private BaseSecurity securityManager; @Autowired @@ -87,16 +90,6 @@ public class WebDAVPasswordController extends FormBasicController { accessDataFlc = FormLayoutContainer.createDefaultFormLayout("flc_access_data", getTranslator()); layoutContainer.add(accessDataFlc); - - StringBuilder sb = new StringBuilder(); - sb.append(getIdentity().getName()); - if(StringHelper.containsNonWhitespace(getIdentity().getUser().getEmail())) { - sb.append(", ").append(getIdentity().getUser().getEmail()); - } - if(StringHelper.containsNonWhitespace(getIdentity().getUser().getInstitutionalEmail())) { - sb.append(", ").append(getIdentity().getUser().getInstitutionalEmail()); - } - uifactory.addStaticTextElement("pwdav.username", "pwdav.username", sb.toString(), accessDataFlc); boolean hasOlatToken = false; boolean hasWebDAVToken = false; @@ -104,11 +97,19 @@ public class WebDAVPasswordController extends FormBasicController { for(Authentication auth : authentications) { if(BaseSecurityModule.getDefaultAuthProviderIdentifier().equals(auth.getProvider())) { hasOlatToken = true; - } else if(WebDAVAuthManager.PROVIDER_WEBDAV.equals(auth.getProvider())) { + } else if(WebDAVAuthManager.PROVIDER_WEBDAV.equals(auth.getProvider()) + || WebDAVAuthManager.PROVIDER_WEBDAV_EMAIL.equals(auth.getProvider()) + || WebDAVAuthManager.PROVIDER_WEBDAV_INSTITUTIONAL_EMAIL.equals(auth.getProvider()) + || WebDAVAuthManager.PROVIDER_HA1.equals(auth.getProvider()) + || WebDAVAuthManager.PROVIDER_HA1_EMAIL.equals(auth.getProvider()) + || WebDAVAuthManager.PROVIDER_HA1_INSTITUTIONAL_EMAIL.equals(auth.getProvider())) { hasWebDAVToken = true; } } + String usernames = getUsernames(authentications); + usernamesStaticEl = uifactory.addStaticTextElement("pwdav.username", "pwdav.username", usernames, accessDataFlc); + if(hasOlatToken) { String passwordPlaceholder = getTranslator().translate("pwdav.password.placeholder"); uifactory.addStaticTextElement("pwdav.password", "pwdav.password", passwordPlaceholder, accessDataFlc); @@ -143,6 +144,35 @@ public class WebDAVPasswordController extends FormBasicController { } } + private String getUsernames(List<Authentication> authentications) { + StringBuilder sb = new StringBuilder(); + sb.append(getIdentity().getName()); + if(userModule.isEmailUnique()) { + if(StringHelper.containsNonWhitespace(getIdentity().getUser().getEmail())) { + sb.append(", ").append(getIdentity().getUser().getEmail()); + } + if(StringHelper.containsNonWhitespace(getIdentity().getUser().getInstitutionalEmail())) { + sb.append(", ").append(getIdentity().getUser().getInstitutionalEmail()); + } + } + + for(Authentication auth : authentications) { + if(WebDAVAuthManager.PROVIDER_WEBDAV.equals(auth.getProvider()) + || WebDAVAuthManager.PROVIDER_WEBDAV_EMAIL.equals(auth.getProvider()) + || WebDAVAuthManager.PROVIDER_WEBDAV_INSTITUTIONAL_EMAIL.equals(auth.getProvider()) + || WebDAVAuthManager.PROVIDER_HA1.equals(auth.getProvider()) + || WebDAVAuthManager.PROVIDER_HA1_EMAIL.equals(auth.getProvider()) + || WebDAVAuthManager.PROVIDER_HA1_INSTITUTIONAL_EMAIL.equals(auth.getProvider())) { + String authUsername = auth.getAuthusername(); + if(sb.indexOf(authUsername) < 0) { + sb.append(", ").append(authUsername); + } + } + } + + return sb.toString(); + } + @Override protected void doDispose() { //auto-disposed @@ -215,6 +245,10 @@ public class WebDAVPasswordController extends FormBasicController { String buttonPlaceholderKey = auth == null ? "pwdav.password.new" : "pwdav.password.change"; newButton.setI18nKey(buttonPlaceholderKey); + List<Authentication> authentications = securityManager.getAuthentications(ureq.getIdentity()); + String usernames = getUsernames(authentications); + usernamesStaticEl.setValue(usernames); + flc.setDirty(true); } }