From 1b7a529689d3d9cefea152de2caf939a2c4a12d1 Mon Sep 17 00:00:00 2001 From: Thibault Coupin Date: Mon, 29 Oct 2018 16:41:52 +0100 Subject: [PATCH] Fix #5225 - Crendential store bundle key instead of value --- src/main/java/Bundle.properties | 3 +++ src/main/java/Bundle_fr.properties | 3 +++ .../edu/harvard/iq/dataverse/LoginPage.java | 4 ++-- .../CredentialsAuthenticationProvider.java | 14 +++++++------- .../builtin/BuiltinAuthenticationProvider.java | 6 ++---- .../echo/EchoAuthenticationProvider.java | 17 ++++++++++------- .../providers/oauth2/OAuth2FirstLoginPage.java | 4 ++-- .../harvard/iq/dataverse/util/BundleUtil.java | 2 +- src/main/webapp/loginpage.xhtml | 2 +- .../BuiltinAuthenticationProviderTest.java | 4 ++-- 10 files changed, 33 insertions(+), 26 deletions(-) diff --git a/src/main/java/Bundle.properties b/src/main/java/Bundle.properties index 6eadf21cb0d..503935b2860 100755 --- a/src/main/java/Bundle.properties +++ b/src/main/java/Bundle.properties @@ -265,6 +265,9 @@ login.institution.support.afterLink=for assistance. login.builtin.credential.usernameOrEmail=Username/Email login.builtin.credential.password=Password login.builtin.invalidUsernameEmailOrPassword=The username, email address, or password you entered is invalid. Need assistance accessing your account? +login.echo.credential.name=Name +login.echo.credential.email=Email +login.echo.credential.affiliation=Affiliation # how do we exercise login.error? Via a password upgrade failure? See https://github.com/IQSS/dataverse/pull/2922 login.error=Error validating the username, email address, or password. Please try again. If the problem persists, contact an administrator. user.error.cannotChangePassword=Sorry, your password cannot be changed. Please contact your system administrator. diff --git a/src/main/java/Bundle_fr.properties b/src/main/java/Bundle_fr.properties index 8d37eb21f23..fb5e0bbcfbd 100644 --- a/src/main/java/Bundle_fr.properties +++ b/src/main/java/Bundle_fr.properties @@ -264,6 +264,9 @@ login.institution.support.afterLink=pour obtenir de l'aide. login.builtin.credential.usernameOrEmail=Nom d'utilisateur/courriel login.builtin.credential.password=Mot de passe login.builtin.invalidUsernameEmailOrPassword=Le nom d'utilisateur, le courriel ou le mot de passe indiqué n'est pas valide. Avez-vous besoin d'aide pour accéder à votre compte? +login.echo.credential.name=Nom +login.echo.credential.email=Email +login.echo.credential.affiliation=Affiliation # how do we exercise login.error? Via a password upgrade failure? See https://github.com/IQSS/dataverse/pull/2922 login.error=Une erreur s'est produite au moment de la validation du nom d'utilisateur ou du mot de passe. Veuillez essayer à nouveau. Si le problème persiste, communiquez avec un administrateur. user.error.cannotChangePassword=Désolé, votre mot de passe ne peut pas être modifié. Veuillez contacter votre administrateur système. diff --git a/src/main/java/edu/harvard/iq/dataverse/LoginPage.java b/src/main/java/edu/harvard/iq/dataverse/LoginPage.java index 2851bb7ccf3..f743c7c7c61 100644 --- a/src/main/java/edu/harvard/iq/dataverse/LoginPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/LoginPage.java @@ -162,9 +162,9 @@ public String login() { } for ( FilledCredential fc : filledCredentialsList ) { if(fc.getValue()==null || fc.getValue().isEmpty()){ - JH.addMessage(FacesMessage.SEVERITY_ERROR, BundleUtil.getStringFromBundle("login."+fc.getCredential().getTitle())); + JH.addMessage(FacesMessage.SEVERITY_ERROR, BundleUtil.getStringFromBundle("login."+fc.getCredential().getKey())); } - authReq.putCredential(fc.getCredential().getTitle(), fc.getValue()); + authReq.putCredential(fc.getCredential().getKey(), fc.getValue()); } authReq.setIpAddress( dvRequestService.getDataverseRequest().getSourceAddress() ); try { diff --git a/src/main/java/edu/harvard/iq/dataverse/authorization/CredentialsAuthenticationProvider.java b/src/main/java/edu/harvard/iq/dataverse/authorization/CredentialsAuthenticationProvider.java index 2b1ab3d0a33..ff8aca9c0a7 100644 --- a/src/main/java/edu/harvard/iq/dataverse/authorization/CredentialsAuthenticationProvider.java +++ b/src/main/java/edu/harvard/iq/dataverse/authorization/CredentialsAuthenticationProvider.java @@ -12,23 +12,23 @@ public interface CredentialsAuthenticationProvider extends AuthenticationProvider { static class Credential { - private final String title; + private final String key; /** * When {@code true}, the login form will use the secret/password widget rather than the regular text field. */ private final boolean secret; - public Credential(String title, boolean secret) { - this.title = title; + public Credential(String key, boolean secret) { + this.key = key; this.secret = secret; } - public Credential(String title) { - this( title, false); + public Credential(String key) { + this( key, false); } - public String getTitle() { - return title; + public String getKey() { + return key; } public boolean isSecret() { diff --git a/src/main/java/edu/harvard/iq/dataverse/authorization/providers/builtin/BuiltinAuthenticationProvider.java b/src/main/java/edu/harvard/iq/dataverse/authorization/providers/builtin/BuiltinAuthenticationProvider.java index 29e48d92329..ed7607c91cf 100644 --- a/src/main/java/edu/harvard/iq/dataverse/authorization/providers/builtin/BuiltinAuthenticationProvider.java +++ b/src/main/java/edu/harvard/iq/dataverse/authorization/providers/builtin/BuiltinAuthenticationProvider.java @@ -23,8 +23,8 @@ public class BuiltinAuthenticationProvider implements CredentialsAuthenticationProvider { public static final String PROVIDER_ID = "builtin"; - private static String KEY_USERNAME_OR_EMAIL; - private static String KEY_PASSWORD; + private static final String KEY_USERNAME_OR_EMAIL = "login.builtin.credential.usernameOrEmail"; + private static final String KEY_PASSWORD = "login.builtin.credential.password"; private static List CREDENTIALS_LIST; final BuiltinUserServiceBean bean; @@ -35,8 +35,6 @@ public BuiltinAuthenticationProvider( BuiltinUserServiceBean aBean, PasswordVali this.bean = aBean; this.authBean = auBean; this.passwordValidatorService = passwordValidatorService; - KEY_USERNAME_OR_EMAIL = BundleUtil.getStringFromBundle("login.builtin.credential.usernameOrEmail"); - KEY_PASSWORD = BundleUtil.getStringFromBundle("login.builtin.credential.password"); CREDENTIALS_LIST = Arrays.asList(new Credential(KEY_USERNAME_OR_EMAIL), new Credential(KEY_PASSWORD, true)); } diff --git a/src/main/java/edu/harvard/iq/dataverse/authorization/providers/echo/EchoAuthenticationProvider.java b/src/main/java/edu/harvard/iq/dataverse/authorization/providers/echo/EchoAuthenticationProvider.java index 201f5f2bb02..e638a7bbc48 100644 --- a/src/main/java/edu/harvard/iq/dataverse/authorization/providers/echo/EchoAuthenticationProvider.java +++ b/src/main/java/edu/harvard/iq/dataverse/authorization/providers/echo/EchoAuthenticationProvider.java @@ -24,6 +24,9 @@ public class EchoAuthenticationProvider implements CredentialsAuthenticationProv private final String prefix; private final String postfix; private final AuthenticationProviderDisplayInfo info; + private final String KEY_NAME = "login.echo.credential.name"; + private final String KEY_EMAIL = "login.echo.credential.email"; + private final String KEY_AFFILIATION = "login.echo.credential.affiliation"; public EchoAuthenticationProvider(String id, String prefix, String postfix, AuthenticationProviderDisplayInfo someInfo) { @@ -42,9 +45,9 @@ public EchoAuthenticationProvider(String id) { @Override public List getRequiredCredentials() { - return Arrays.asList( new Credential("Name"), - new Credential("Email"), - new Credential("Affiliation") ); + return Arrays.asList( new Credential(KEY_NAME), + new Credential(KEY_EMAIL), + new Credential(KEY_AFFILIATION) ); } @Override @@ -60,10 +63,10 @@ public AuthenticationProviderDisplayInfo getInfo() { @Override public AuthenticationResponse authenticate(AuthenticationRequest request) { AuthenticatedUserDisplayInfo disinf = new AuthenticatedUserDisplayInfo( - prefix + " " + request.getCredential("Name") + " " + postfix, - prefix + " " + request.getCredential("Name") + " " + postfix, - request.getCredential("Email"), - request.getCredential("Affiliation"), + prefix + " " + request.getCredential(KEY_NAME) + " " + postfix, + prefix + " " + request.getCredential(KEY_NAME) + " " + postfix, + request.getCredential(KEY_EMAIL), + request.getCredential(KEY_AFFILIATION), null); return AuthenticationResponse.makeSuccess(disinf.getEmailAddress(), disinf); } diff --git a/src/main/java/edu/harvard/iq/dataverse/authorization/providers/oauth2/OAuth2FirstLoginPage.java b/src/main/java/edu/harvard/iq/dataverse/authorization/providers/oauth2/OAuth2FirstLoginPage.java index 6f10dd10632..48258b9c0d3 100644 --- a/src/main/java/edu/harvard/iq/dataverse/authorization/providers/oauth2/OAuth2FirstLoginPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/authorization/providers/oauth2/OAuth2FirstLoginPage.java @@ -202,8 +202,8 @@ public String convertExistingAccount() { BuiltinAuthenticationProvider biap = new BuiltinAuthenticationProvider(builtinUserSvc, passwordValidatorService, authenticationSvc); AuthenticationRequest auReq = new AuthenticationRequest(); final List creds = biap.getRequiredCredentials(); - auReq.putCredential(creds.get(0).getTitle(), getUsername()); - auReq.putCredential(creds.get(1).getTitle(), getPassword()); + auReq.putCredential(creds.get(0).getKey(), getUsername()); + auReq.putCredential(creds.get(1).getKey(), getPassword()); try { AuthenticatedUser existingUser = authenticationSvc.getUpdateAuthenticatedUser(BuiltinAuthenticationProvider.PROVIDER_ID, auReq); authenticationSvc.updateProvider(existingUser, newUser.getServiceId(), newUser.getIdInService()); diff --git a/src/main/java/edu/harvard/iq/dataverse/util/BundleUtil.java b/src/main/java/edu/harvard/iq/dataverse/util/BundleUtil.java index 721fe2fde39..f451b935edf 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/BundleUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/BundleUtil.java @@ -35,7 +35,7 @@ public static String getStringFromBundle(String key, List arguments, Res String stringFromBundle = null; try { stringFromBundle = bundle.getString(key); - logger.fine("string found: " + stringFromBundle); + logger.fine("string found: [" + key + "]:" + stringFromBundle); } catch (MissingResourceException ex) { logger.warning("Could not find key \"" + key + "\" in bundle file."); return null; diff --git a/src/main/webapp/loginpage.xhtml b/src/main/webapp/loginpage.xhtml index d720db3877c..7bc5fb1a1f4 100644 --- a/src/main/webapp/loginpage.xhtml +++ b/src/main/webapp/loginpage.xhtml @@ -63,7 +63,7 @@
diff --git a/src/test/java/edu/harvard/iq/dataverse/authorization/providers/builtin/BuiltinAuthenticationProviderTest.java b/src/test/java/edu/harvard/iq/dataverse/authorization/providers/builtin/BuiltinAuthenticationProviderTest.java index 52dc67f2034..ebf22f9dcb4 100644 --- a/src/test/java/edu/harvard/iq/dataverse/authorization/providers/builtin/BuiltinAuthenticationProviderTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/authorization/providers/builtin/BuiltinAuthenticationProviderTest.java @@ -124,8 +124,8 @@ public void testVerifyPassword() { @Test public void testAuthenticate() { bean.save(makeBuiltInUser()); - String crdUsername = sut.getRequiredCredentials().get(0).getTitle(); - String crdPassword = sut.getRequiredCredentials().get(1).getTitle(); + String crdUsername = sut.getRequiredCredentials().get(0).getKey(); + String crdPassword = sut.getRequiredCredentials().get(1).getKey(); AuthenticationRequest req = new AuthenticationRequest(); req.putCredential(crdUsername, "username"); req.putCredential(crdPassword, "password");