You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2017/07/28 11:23:10 UTC

[4/4] syncope git commit: [SYNCOPE-1175] Fixing token generation

[SYNCOPE-1175] Fixing token generation


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/98ab61e0
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/98ab61e0
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/98ab61e0

Branch: refs/heads/2_0_X
Commit: 98ab61e060a4045720b6d09e1392404ac461b7df
Parents: 0c9f958
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Jul 28 13:21:55 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Jul 28 13:22:58 2017 +0200

----------------------------------------------------------------------
 .../resources/UserSelfConfirmPasswordReset.java | 20 +++----------
 .../resources/UserSelfPasswordReset.java        | 31 +++++---------------
 .../app/js/controllers/UserController.js        | 14 ++++-----
 .../app/js/services/userSelfService.js          |  5 ++--
 .../resources/app/languages/en/static.json      |  6 ++--
 .../resources/app/languages/it/static.json      |  2 +-
 .../core/spring/security/SecureRandomUtils.java |  7 +++++
 .../src/test/resources/tests/create.js          |  2 +-
 .../src/test/resources/tests/edit.js            |  1 -
 9 files changed, 32 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/98ab61e0/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfConfirmPasswordReset.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfConfirmPasswordReset.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfConfirmPasswordReset.java
index 343ed64..8bb15c2 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfConfirmPasswordReset.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfConfirmPasswordReset.java
@@ -18,8 +18,6 @@
  */
 package org.apache.syncope.client.enduser.resources;
 
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
 import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.core.MediaType;
@@ -31,14 +29,14 @@ import org.apache.wicket.request.resource.AbstractResource;
 import org.apache.wicket.request.resource.IResource;
 
 @Resource(key = "userSelfConfirmPasswordReset", path = "/api/self/confirmPasswordReset")
-public class UserSelfConfirmPasswordReset extends BaseResource {
+public class UserSelfConfirmPasswordReset extends BaseUserSelfResource {
 
     private static final long serialVersionUID = -2721621682300247583L;
 
     @Override
     protected ResourceResponse newResourceResponse(final IResource.Attributes attributes) {
         ResourceResponse response = new AbstractResource.ResourceResponse();
-        response.setContentType(MediaType.APPLICATION_JSON);
+        response.setContentType(MediaType.TEXT_PLAIN);
         try {
             HttpServletRequest request = (HttpServletRequest) attributes.getRequest().getContainerRequest();
             if (!xsrfCheck(request)) {
@@ -61,18 +59,8 @@ public class UserSelfConfirmPasswordReset extends BaseResource {
             SyncopeEnduserSession.get().getService(UserSelfService.class).
                     confirmPasswordReset(token, parameters.get("newPassword")[0]);
 
-            final String responseMessage = new StringBuilder().append("Password changed correctly").toString();
-
-            response.setTextEncoding(StandardCharsets.UTF_8.name());
-            response.setWriteCallback(new WriteCallback() {
-
-                @Override
-                public void writeData(final Attributes attributes) throws IOException {
-                    attributes.getResponse().write(responseMessage);
-                }
-            });
-
-            response.setStatusCode(Response.Status.OK.getStatusCode());
+            buildResponse(response, Response.Status.OK.getStatusCode(),
+                    "Password successfully updated");
         } catch (final Exception e) {
             LOG.error("Error while updating user", e);
             response.setError(Response.Status.BAD_REQUEST.getStatusCode(), new StringBuilder()

http://git-wip-us.apache.org/repos/asf/syncope/blob/98ab61e0/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfPasswordReset.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfPasswordReset.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfPasswordReset.java
index f97d348..77408a6 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfPasswordReset.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfPasswordReset.java
@@ -18,8 +18,6 @@
  */
 package org.apache.syncope.client.enduser.resources;
 
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
 import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.core.MediaType;
@@ -33,14 +31,15 @@ import org.apache.wicket.request.resource.AbstractResource;
 import org.apache.wicket.request.resource.IResource;
 
 @Resource(key = "userSelfPasswordReset", path = "/api/self/requestPasswordReset")
-public class UserSelfPasswordReset extends BaseResource {
+public class UserSelfPasswordReset extends BaseUserSelfResource {
 
     private static final long serialVersionUID = -2721621682300247583L;
 
     @Override
     protected ResourceResponse newResourceResponse(final IResource.Attributes attributes) {
         ResourceResponse response = new AbstractResource.ResourceResponse();
-        response.setContentType(MediaType.APPLICATION_JSON);
+        response.setContentType(MediaType.TEXT_PLAIN);
+        String[] usernameParam = { "<unknown>" };
         try {
             HttpServletRequest request = (HttpServletRequest) attributes.getRequest().getContainerRequest();
             if (!xsrfCheck(request)) {
@@ -50,7 +49,7 @@ public class UserSelfPasswordReset extends BaseResource {
             }
 
             Map<String, String[]> parameters = request.getParameterMap();
-            String[] usernameParam = parameters.get("username");
+            usernameParam = parameters.get("username");
             if (ArrayUtils.isEmpty(usernameParam)) {
                 throw new Exception("A valid username should be provided");
             }
@@ -74,28 +73,12 @@ public class UserSelfPasswordReset extends BaseResource {
                 SyncopeEnduserSession.get().getService(UserSelfService.class).
                         requestPasswordReset(usernameParam[0], null);
             }
-            final String responseMessage = new StringBuilder().
-                    append("Password reset request sent for user ").append(usernameParam[0]).toString();
-
-            response.setTextEncoding(StandardCharsets.UTF_8.name());
-            response.setWriteCallback(new WriteCallback() {
-
-                @Override
-                public void writeData(final Attributes attributes) throws IOException {
-                    attributes.getResponse().write(responseMessage);
-                }
-            });
-
-            response.setStatusCode(Response.Status.OK.getStatusCode());
         } catch (final Exception e) {
             LOG.error("Error while updating user", e);
-            response.setError(Response.Status.BAD_REQUEST.getStatusCode(),
-                    new StringBuilder().
-                            append("ErrorMessage{{ ").
-                            append(e.getMessage()).
-                            append(" }}").
-                            toString());
         }
+
+        buildResponse(response, Response.Status.OK.getStatusCode(),
+                "Password reset request sent for user " + usernameParam[0]);
         return response;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/98ab61e0/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
index 1afc42c..cfc57ed 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
@@ -446,8 +446,7 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
     $scope.retrieveSecurityQuestion = function (user) {
       if ($rootScope.pwdResetRequiringSecurityQuestions) {
         if (user && user.username && user.username.length) {
-          return SecurityQuestionService.
-                  getSecurityQuestionByUser(user.username).then(function (data) {
+          return SecurityQuestionService.getSecurityQuestionByUser(user.username).then(function (data) {
             $scope.userSecurityQuestion = data.content;
           }, function (response) {
             var errorMessage;
@@ -467,13 +466,15 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
 
     $scope.resetPassword = function (user) {
       if (user && user.username) {
-        $scope.retrieveSecurityQuestion(user);
         UserSelfService.passwordReset(user, $scope.captchaInput.value).then(function (data) {
-          console.info("User " + $scope.user.username);
           $rootScope.currentUser = $scope.user.username;
           $rootScope.currentOp = "PASSWORD_UPDATED";
           $translate.use($scope.languages.selectedLanguage.code);
-          $state.go('success');
+          $scope.success({successMessage: $filter('translate')(["USER"]).USER
+                    + " "
+                    + $scope.user.username
+                    + " "
+                    + $filter('translate')(["SUCCESSFULLY_UPDATED"]).SUCCESSFULLY_UPDATED});
         }, function (response) {
           var errorMessage;
           // parse error response 
@@ -499,9 +500,8 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
           var token = $location.search().token;
           if (user && user.password && token) {
             UserSelfService.confirmPasswordReset({"newPassword": user.password, "token": token}).then(function (data) {
-              $scope.showSuccess(data, $scope.notification);
               $translate.use($scope.languages.selectedLanguage.code);
-              $location.path('/self');
+              $scope.success({successMessage: $filter('translate')(["PASSWORD_UPDATED"]).PASSWORD_UPDATED});
             }, function (response) {
               var errorMessage;
               // parse error response 

http://git-wip-us.apache.org/repos/asf/syncope/blob/98ab61e0/client/enduser/src/main/resources/META-INF/resources/app/js/services/userSelfService.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/userSelfService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/userSelfService.js
index 9f9f444..39fd3a2 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/userSelfService.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/userSelfService.js
@@ -40,8 +40,7 @@ angular.module('login')
                                 headers: {'captcha': captcha}
                               })
                       .then(function (response) {
-                        var username = response;
-                        return username;
+                        return response;
                       }, function (response) {
                         console.error("Something went wrong during user self creation, exit with status: ", response);
                         return $q.reject(response.data || response.statusText);
@@ -54,7 +53,7 @@ angular.module('login')
                                 headers: {'captcha': captcha}
                               })
                       .then(function (response) {
-                        var username = response;
+                        return response;
                       }, function (response) {
                         console.error("Something went wrong during user self update, exit with status: ", response);
                         return $q.reject(response.data || response.statusText);

http://git-wip-us.apache.org/repos/asf/syncope/blob/98ab61e0/client/enduser/src/main/resources/META-INF/resources/app/languages/en/static.json
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/languages/en/static.json b/client/enduser/src/main/resources/META-INF/resources/app/languages/en/static.json
index 076bd6c..90e5e19 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/languages/en/static.json
+++ b/client/enduser/src/main/resources/META-INF/resources/app/languages/en/static.json
@@ -47,9 +47,9 @@
   "RESOURCES_PLACEHOLDER": "Click to select resources...",
   "REALM": "Realm",
   "NEWUSER": "New User",
-  "SUCCESSFULLY_CREATED": "succesfully created",
-  "SUCCESSFULLY_UPDATED": "succesfully updated",
-  "PASSWORD_UPDATED": ": password succesfully reset",
+  "SUCCESSFULLY_CREATED": "successfully created",
+  "SUCCESSFULLY_UPDATED": "successfully updated",
+  "PASSWORD_UPDATED": "Password successfully reset",
   "GOBACKHOME": "Click on this link to go back to the home page",
   "CONFIRM_REMOVE": "This will remove the current value. Continue?",
   "own": "Own"

http://git-wip-us.apache.org/repos/asf/syncope/blob/98ab61e0/client/enduser/src/main/resources/META-INF/resources/app/languages/it/static.json
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/languages/it/static.json b/client/enduser/src/main/resources/META-INF/resources/app/languages/it/static.json
index d5c7038..e227a05 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/languages/it/static.json
+++ b/client/enduser/src/main/resources/META-INF/resources/app/languages/it/static.json
@@ -49,7 +49,7 @@
   "REALM": "Realm",
   "SUCCESSFULLY_CREATED": "creato con successo",
   "SUCCESSFULLY_UPDATED": "aggiornato con successo",
-  "PASSWORD_UPDATED": ": password resettata con successo",
+  "PASSWORD_UPDATED": "Password resettata con successo",
   "GOBACKHOME": "Clicca su questo link per tornare alla home page",
   "CONFIRM_REMOVE": "Questa azione rimuoverĂ  il valore corrente. Continuare?",
   "own": "Propri"

http://git-wip-us.apache.org/repos/asf/syncope/blob/98ab61e0/core/spring/src/main/java/org/apache/syncope/core/spring/security/SecureRandomUtils.java
----------------------------------------------------------------------
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/SecureRandomUtils.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/SecureRandomUtils.java
index 0e9e0ff..e68cb6b 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/SecureRandomUtils.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/SecureRandomUtils.java
@@ -26,6 +26,13 @@ public final class SecureRandomUtils {
 
     private static final RandomStringGenerator FOR_PASSWORD = new RandomStringGenerator.Builder().
             usingRandom(new SecureTextRandomProvider()).
+            filteredBy(new CharacterPredicate() {
+
+                @Override
+                public boolean test(final int codePoint) {
+                    return (codePoint >= 'a' && codePoint <= 'z') || (codePoint >= '0' && codePoint <= '9');
+                }
+            }).
             build();
 
     private static final RandomStringGenerator FOR_LETTERS = new RandomStringGenerator.Builder().

http://git-wip-us.apache.org/repos/asf/syncope/blob/98ab61e0/fit/enduser-reference/src/test/resources/tests/create.js
----------------------------------------------------------------------
diff --git a/fit/enduser-reference/src/test/resources/tests/create.js b/fit/enduser-reference/src/test/resources/tests/create.js
index b1f049f..bdf06e1 100644
--- a/fit/enduser-reference/src/test/resources/tests/create.js
+++ b/fit/enduser-reference/src/test/resources/tests/create.js
@@ -47,7 +47,7 @@ describe('syncope enduser user create', function () {
     selectedGroup.sendKeys('root');
     element.all(by.css('.ui-select-choices-row-inner span')).first().click();
     abstract.waitSpinner();
-    element.all(by.id('next')).first().click();
+    abstract.doNext();
 
     //plainSchemas
     abstract.waitSpinner();

http://git-wip-us.apache.org/repos/asf/syncope/blob/98ab61e0/fit/enduser-reference/src/test/resources/tests/edit.js
----------------------------------------------------------------------
diff --git a/fit/enduser-reference/src/test/resources/tests/edit.js b/fit/enduser-reference/src/test/resources/tests/edit.js
index 2da5240..9fa3f95 100644
--- a/fit/enduser-reference/src/test/resources/tests/edit.js
+++ b/fit/enduser-reference/src/test/resources/tests/edit.js
@@ -54,7 +54,6 @@ describe('syncope enduser user edit', function () {
     browser.wait(element(by.model('user.realm')).isPresent());
     element(by.model('user.realm')).click();
     element.all(by.repeater('realm in availableRealms')).get(0).click();
-    browser.wait(element(by.model('dynamicForm.selectedGroups')).isPresent());
     var group = element(by.model('dynamicForm.selectedGroups'));
     var selectedGroup = group.element(by.css('.ui-select-search'));
     group.click();