From 90ec12d1d19994a20fab892054814e849c4a3c3a Mon Sep 17 00:00:00 2001
From: blavenie <benoit.lavenier@e-is.pro>
Date: Sat, 11 Feb 2017 18:42:41 +0100
Subject: [PATCH] - Add validation on userid, in the join wizard form - #277

---
 www/i18n/locale-fr-FR.json             |  2 +-
 www/js/controllers/join-controllers.js |  3 ++-
 www/templates/join/modal_join.html     | 25 ++++---------------------
 3 files changed, 7 insertions(+), 23 deletions(-)

diff --git a/www/i18n/locale-fr-FR.json b/www/i18n/locale-fr-FR.json
index e3bdd9be2..a2bfef811 100644
--- a/www/i18n/locale-fr-FR.json
+++ b/www/i18n/locale-fr-FR.json
@@ -413,7 +413,7 @@
     "AMOUNT_NEGATIVE": "Montant négatif non autorisé.",
     "NOT_ENOUGH_CREDIT": "Crédit insufisant.",
     "INVALID_NODE_SUMMARY": "NÅ“ud injoignable ou adresse invalide.",
-    "INVALID_USER_ID": "Le champ 'pseudonyme' ne doit contenir ni espace ni caractère spécial ou accentué.",
+    "INVALID_USER_ID": "Le pseudonyme ne doit contenir ni espace ni caractère spécial ou accentué.",
     "INVALID_COMMENT": "Le champ 'référence' ne doit pas contenir de caractères accentués.",
     "INVALID_PUBKEY": "La clé publique n'a pas le format attendu.",
     "IDENTITY_REVOKED": "Cette identité <b>a été révoquée {{revocationTime|formatFromNow}}</b> ({{revocationTime|formatDate}}). Elle ne peut plus devenir membre.",
diff --git a/www/js/controllers/join-controllers.js b/www/js/controllers/join-controllers.js
index 0529a73b0..7f636a86b 100644
--- a/www/js/controllers/join-controllers.js
+++ b/www/js/controllers/join-controllers.js
@@ -36,7 +36,7 @@ function JoinController($timeout, Modals) {
 }
 
 
-function JoinModalController($scope, $state,  UIUtils, CryptoUtils, Modals, csWallet, csCurrency) {
+function JoinModalController($scope, $state,  UIUtils, CryptoUtils, Modals, csWallet, csCurrency, BMA) {
   'ngInject';
 
   $scope.formData = {
@@ -57,6 +57,7 @@ function JoinModalController($scope, $state,  UIUtils, CryptoUtils, Modals, csWa
   $scope.showUsername = false;
   $scope.showPassword = false;
   $scope.smallscreen = UIUtils.screen.isSmall();
+  $scope.userIdPattern = BMA.constants.regex.USER_ID;
 
   csCurrency.load()
   .then(function (data) {
diff --git a/www/templates/join/modal_join.html b/www/templates/join/modal_join.html
index 4703e934d..9adf4ca98 100644
--- a/www/templates/join/modal_join.html
+++ b/www/templates/join/modal_join.html
@@ -150,15 +150,6 @@
               <div class="form-errors"
                    ng-show="saltForm.$submitted && saltForm.confirmUsername.$error"
                    ng-messages="saltForm.confirmUsername.$error">
-                <div class="form-error" ng-message="minlength">
-                  <span translate="ERROR.FIELD_TOO_SHORT"></span>
-                </div>
-                <div class="form-error" ng-message="maxlength">
-                  <span translate="ERROR.FIELD_TOO_LONG"></span>
-                </div>
-                <div class="form-error" ng-message="required">
-                  <span translate="ERROR.FIELD_REQUIRED"></span>
-                </div>
                 <div class="form-error" ng-message="compareTo">
                   <span translate="ERROR.SALT_NOT_CONFIRMED"></span>
                 </div>
@@ -224,9 +215,6 @@
                 <div class="form-error" ng-message="minlength">
                   <span translate="ERROR.FIELD_TOO_SHORT_WITH_LENGTH" translate-values="{minLength: 8}"></span>
                 </div>
-                <div class="form-error" ng-message="maxlength">
-                  <span translate="ERROR.FIELD_TOO_LONG"></span>
-                </div>
                 <div class="form-error" ng-message="required">
                   <span translate="ERROR.FIELD_REQUIRED"></span>
                 </div>
@@ -250,15 +238,6 @@
               <div class="form-errors"
                    ng-show="passwordForm.$submitted && passwordForm.confirmPassword.$error"
                    ng-messages="passwordForm.confirmPassword.$error">
-                <div class="form-error" ng-message="minlength">
-                  <span translate="ERROR.FIELD_TOO_SHORT"></span>
-                </div>
-                <div class="form-error" ng-message="maxlength">
-                  <span translate="ERROR.FIELD_TOO_LONG"></span>
-                </div>
-                <div class="form-error" ng-message="required">
-                  <span translate="ERROR.FIELD_REQUIRED"></span>
-                </div>
                 <div class="form-error" ng-message="compareTo">
                   <span translate="ERROR.PASSWORD_NOT_CONFIRMED"></span>
                 </div>
@@ -312,6 +291,7 @@
                        ng-model="formData.pseudo"
                        ng-minlength="3"
                        ng-maxlength="100"
+                       ng-pattern="userIdPattern"
                        required>
               </div>
               <div class="form-errors"
@@ -327,6 +307,9 @@
                 <div class="form-error" ng-message="required">
                   <span translate="ERROR.FIELD_REQUIRED"></span>
                 </div>
+                <div class="form-error" ng-message="pattern">
+                  <span translate="ERROR.INVALID_USER_ID"></span>
+                </div>
               </div>
 
               <div class="padding hidden-xs text-right">
-- 
GitLab