added username validation to signup

This commit is contained in:
David Baldwynn 2016-07-04 14:31:33 -07:00
parent cf4fc6c906
commit 283a6c2d38
8 changed files with 28 additions and 23 deletions

View file

@ -145,11 +145,11 @@ angular.module('NodeForm.templates', []).run(['$templateCache', function($templa
$templateCache.put("modules/users/views/authentication/access-denied.client.view.html",
"<section class=\"row text-center auth\"><h3 class=col-md-12>{{ 'ACCESS_DENIED_TEXT' | translate }}</h3><a href=/#!/sigin class=col-md-12>{{ 'SIGNIN_BTN' | translate }}</a></section>");
$templateCache.put("modules/users/views/authentication/signin.client.view.html",
"<section class=\"row auth\" data-ng-controller=AuthenticationController><h3 class=\"col-md-12 text-center\">Sign into your account</h3><div class=\"col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6\"><form class=\"signin form-horizontal\" autocomplete=off><fieldset><div data-ng-show=error class=\"text-center text-danger\">Error: <strong data-ng-bind=error></strong></div><div class=form-group><label for=username>{{ 'EMAIL_LABEL' | translate }}</label><input id=username name=username class=form-control data-ng-model=credentials.username placeholder=\"{{ 'EMAIL_LABEL' | translate }}\"></div><div class=form-group><label for=password>{{ 'PASSWORD_LABEL' | translate }}</label><input type=password id=password name=password class=form-control data-ng-model=credentials.password placeholder=\"{{ 'PASSWORD_LABEL' | translate }}\"></div><div class=forgot-password><a ui-sref=forgot>{{ 'FORGOT_PASSWORD_LINK' | translate }}</a><br><a ui-sref=verify>{{ 'REVERIFY_ACCOUNT_LINK' | translate }}</a></div><div class=\"text-center form-group\"><button class=\"btn btn-primary\" ng-click=signin()>{{ 'SIGNIN_BTN' | translate }}</button> <span ng-hide=$root.signupDisabled>&nbsp; or&nbsp; <a ui-sref=signup>{{ 'SIGNUP_BTN' | translate }}</a></span></div></fieldset></form></div></section>");
"<section class=\"row auth\" data-ng-controller=AuthenticationController><h3 class=\"col-md-12 text-center\">{{ 'SIGNIN_HEADER_TEXT' | translate }}</h3><div class=\"col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6\"><form class=\"signin form-horizontal\"><fieldset><div data-ng-show=error class=\"text-center text-danger\">Error: <strong data-ng-bind=error></strong></div><div class=form-group><label for=username>{{ 'USERNAME_LABEL' | translate }}</label><input id=username name=username class=form-control data-ng-model=credentials.username placeholder=\"{{ 'USERNAME_LABEL' | translate }}\" ng-pattern=languageRegExp ng-minlength=4></div><div class=form-group><label for=password>{{ 'PASSWORD_LABEL' | translate }}</label><input type=password id=password name=password class=form-control data-ng-model=credentials.password placeholder=\"{{ 'PASSWORD_LABEL' | translate }}\"></div><div class=forgot-password><a ui-sref=forgot>{{ 'FORGOT_PASSWORD_LINK' | translate }}</a><br><a ui-sref=verify>{{ 'REVERIFY_ACCOUNT_LINK' | translate }}</a></div><div class=\"text-center form-group\"><button class=\"btn btn-primary\" ng-click=signin()>{{ 'SIGNIN_BTN' | translate }}</button> <span ng-hide=$root.signupDisabled>&nbsp; or&nbsp; <a ui-sref=signup>{{ 'SIGNUP_BTN' | translate }}</a></span></div></fieldset></form></div></section>");
$templateCache.put("modules/users/views/authentication/signup-success.client.view.html",
"<section class=\"row auth signup-view success\" data-ng-controller=AuthenticationController><h3 class=\"col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6 text-center\">{{ 'SUCCESS_HEADER' | translate }}</h3><div class=\"col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6\"><h2>{{ 'SUCCESS_TEXT' | translate }}<br><br>{{ 'NOT_ACTIVATED_YET' | translate }}</h2><br><br><p><strong>{{ 'BEFORE_YOU_CONTINUE' | translate }}</strong> <a href=mail:polydaic@gmail.com>polydaic@gmail.com</a></p><div class=\"text-center form-group\"><button type=submit class=\"btn btn-large btn-primary\"><a href=\"/#!/\" style=\"color: white; text-decoration: none\">Continue</a></button></div></div></section>");
$templateCache.put("modules/users/views/authentication/signup.client.view.html",
"<section class=\"row auth signup-view\" data-ng-controller=AuthenticationController><h3 class=\"col-md-12 text-center\">Signup with your email</h3><div class=\"col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6\"><form name=userForm data-ng-submit=signup() class=\"signin form-horizontal\" novalidate autocomplete=off><fieldset><div data-ng-show=error id=signup_errors class=\"text-center text-danger\">Couldn't complete registration due to errors:<br><strong data-ng-bind=error></strong></div><div class=form-group><label for=firstName>{{ 'FIRST_NAME_LABEL' | translate }}</label><input ng-pattern=\"/^[a-zA-Z0-9 \\-.]*$/\" required id=firstName name=firstName class=form-control ng-model=credentials.firstName placeholder=\"First Name\"></div><div class=form-group><label for=lastName>{{ 'LAST_NAME_LABEL' | translate }}</label><input ng-pattern=\"/^[a-zA-Z0-9 \\-.]*$/\" required id=lastName name=lastName class=form-control ng-model=credentials.lastName placeholder=\"Last Name\"></div><div class=\"row form-group\"><div class=\"col-xs-7 field-title\"><b>{{ 'LANGUAGE_LABEL' | translate }}</b></div><div class=\"col-xs-12 field-input\"><select ng-model=user.language required><option ng-repeat=\"language in languages\" ng-selected=\"language == user.language\" value={{language}}>{{language}}</option></select></div></div><hr><div class=form-group><label for=email>{{ 'USERNAME_LABEL' | translate }}</label><input type=email id=username name=username class=form-control ng-model=credentials.username placeholder=Email></div><div class=form-group><label for=email>{{ 'EMAIL_LABEL' | translate }}</label><input type=email id=email name=email class=form-control ng-model=credentials.email placeholder=Email></div><div class=form-group><label for=password>{{ 'PASSWORD_LABEL' | translate }}</label><input type=password id=password name=password class=form-control ng-model=credentials.password placeholder=Password></div><div class=\"text-center form-group\"><button type=submit class=\"btn btn-large btn-primary\">{{ 'SIGNUP_BTN' | translate }}</button></div></fieldset></form></div></section>");
"<section class=\"row auth signup-view\" data-ng-controller=AuthenticationController><h3 class=\"col-md-12 text-center\">{{ 'SIGNUP_HEADER_TEXT' | translate }}</h3><div class=\"col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6\"><form name=userForm data-ng-submit=signup() class=\"signin form-horizontal\" novalidate autocomplete=off><fieldset><div data-ng-show=error id=signup_errors class=\"text-center text-danger\">{{'SIGNUP_ERROR_TEXT' | translate}}:<br><strong data-ng-bind=error></strong></div><div class=form-group><label for=firstName>{{ 'FIRST_NAME_LABEL' | translate }}</label><input ng-pattern=\"/^[a-zA-Z0-9 \\-.]*$/\" required id=firstName name=firstName class=form-control ng-model=credentials.firstName placeholder=\"First Name\"></div><div class=form-group><label for=lastName>{{ 'LAST_NAME_LABEL' | translate }}</label><input ng-pattern=\"/^[a-zA-Z0-9 \\-.]*$/\" required id=lastName name=lastName class=form-control ng-model=credentials.lastName placeholder=\"Last Name\"></div><div class=\"row form-group\"><div class=field-title><b>{{ 'LANGUAGE_LABEL' | translate }}</b></div><div class=field-input><select ng-model=user.language required><option ng-repeat=\"language in languages\" ng-selected=\"language == user.language\" value={{language}}>{{language}}</option></select></div></div><hr><div class=form-group><label for=username>{{ 'USERNAME_LABEL' | translate }}</label><input id=username name=username class=form-control ng-pattern=languageRegExp ng-minlength=4 ng-model=credentials.username placeholder=Username></div><div class=form-group><label for=email>{{ 'EMAIL_LABEL' | translate }}</label><input type=email id=email name=email class=form-control ng-model=credentials.email placeholder=Email></div><div class=form-group><label for=password>{{ 'PASSWORD_LABEL' | translate }}</label><input type=password id=password name=password class=form-control ng-model=credentials.password placeholder=Password></div><div class=\"text-center form-group\"><button type=submit class=\"btn btn-large btn-primary\">{{ 'SIGNUP_BTN' | translate }}</button></div></fieldset></form></div></section>");
$templateCache.put("modules/users/views/password/forgot-password.client.view.html",
"<section class=\"auth row\" data-ng-controller=PasswordController><h3 class=\"col-md-12 text-center\">{{ 'PASSWORD_RESTORE_HEADER' | translate }}</h3><p class=\"small text-center\">{{ 'ENTER_YOUR_EMAIL' | translate }}</p><div class=\"col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6\"><form data-ng-submit=askForPasswordReset() class=\"signin form-horizontal\" autocomplete=off><fieldset><div class=form-group><input id=username name=username class=form-control data-ng-model=credentials.username placeholder=\"{{ 'USERNAME_LABEL' | translate }}\"></div><div class=\"text-center form-group\"><button type=submit class=\"btn btn-primary\">{{ 'UPDATE_PASSWORD_LABEL' | translate }}</button></div><div data-ng-show=error class=\"text-center text-danger\"><strong>{{error}}</strong></div><div data-ng-show=success class=\"text-center text-success\"><strong>{{success}}</strong></div></fieldset></form></div></section>");
$templateCache.put("modules/users/views/password/reset-password-invalid.client.view.html",
@ -1816,7 +1816,7 @@ angular.module('forms').controller('ListFormsController', ['$rootScope', '$scope
$scope.forms = {};
$scope.showCreateModal = false;
$scope.languageRegExp = $scope.myPt = {
$rootScope.languageRegExp = {
regExp: /[@!#$%^&*()\-+={}\[\]|\\/'";:`.,~№?<>]+/i,
test: function(val) {
return !this.regExp.test(val);
@ -3324,6 +3324,11 @@ angular.module('users').config(['$translateProvider', function ($translateProvid
LANGUAGE_LABEL: 'Language',
EMAIL_LABEL: 'Email',
SIGNUP_HEADER_TEXT: 'Sign up with your email',
SIGNIN_HEADER_TEXT: 'Signup in with your email',
SIGNUP_ERROR_TEXT: 'Couldn\'t complete registration due to errors',
UPDATE_PROFILE_BTN: 'Update Profile',
PROFILE_SAVE_SUCCESS: 'Profile saved successfully',
PROFILE_SAVE_ERROR: 'Could\'t Save Your Profile.',

File diff suppressed because one or more lines are too long

View file

@ -145,11 +145,11 @@ angular.module('NodeForm.templates', []).run(['$templateCache', function($templa
$templateCache.put("modules/users/views/authentication/access-denied.client.view.html",
"<section class=\"row text-center auth\"><h3 class=col-md-12>{{ 'ACCESS_DENIED_TEXT' | translate }}</h3><a href=/#!/sigin class=col-md-12>{{ 'SIGNIN_BTN' | translate }}</a></section>");
$templateCache.put("modules/users/views/authentication/signin.client.view.html",
"<section class=\"row auth\" data-ng-controller=AuthenticationController><h3 class=\"col-md-12 text-center\">Sign into your account</h3><div class=\"col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6\"><form class=\"signin form-horizontal\" autocomplete=off><fieldset><div data-ng-show=error class=\"text-center text-danger\">Error: <strong data-ng-bind=error></strong></div><div class=form-group><label for=username>{{ 'EMAIL_LABEL' | translate }}</label><input id=username name=username class=form-control data-ng-model=credentials.username placeholder=\"{{ 'EMAIL_LABEL' | translate }}\"></div><div class=form-group><label for=password>{{ 'PASSWORD_LABEL' | translate }}</label><input type=password id=password name=password class=form-control data-ng-model=credentials.password placeholder=\"{{ 'PASSWORD_LABEL' | translate }}\"></div><div class=forgot-password><a ui-sref=forgot>{{ 'FORGOT_PASSWORD_LINK' | translate }}</a><br><a ui-sref=verify>{{ 'REVERIFY_ACCOUNT_LINK' | translate }}</a></div><div class=\"text-center form-group\"><button class=\"btn btn-primary\" ng-click=signin()>{{ 'SIGNIN_BTN' | translate }}</button> <span ng-hide=$root.signupDisabled>&nbsp; or&nbsp; <a ui-sref=signup>{{ 'SIGNUP_BTN' | translate }}</a></span></div></fieldset></form></div></section>");
"<section class=\"row auth\" data-ng-controller=AuthenticationController><h3 class=\"col-md-12 text-center\">{{ 'SIGNIN_HEADER_TEXT' | translate }}</h3><div class=\"col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6\"><form class=\"signin form-horizontal\"><fieldset><div data-ng-show=error class=\"text-center text-danger\">Error: <strong data-ng-bind=error></strong></div><div class=form-group><label for=username>{{ 'USERNAME_LABEL' | translate }}</label><input id=username name=username class=form-control data-ng-model=credentials.username placeholder=\"{{ 'USERNAME_LABEL' | translate }}\" ng-pattern=languageRegExp ng-minlength=4></div><div class=form-group><label for=password>{{ 'PASSWORD_LABEL' | translate }}</label><input type=password id=password name=password class=form-control data-ng-model=credentials.password placeholder=\"{{ 'PASSWORD_LABEL' | translate }}\"></div><div class=forgot-password><a ui-sref=forgot>{{ 'FORGOT_PASSWORD_LINK' | translate }}</a><br><a ui-sref=verify>{{ 'REVERIFY_ACCOUNT_LINK' | translate }}</a></div><div class=\"text-center form-group\"><button class=\"btn btn-primary\" ng-click=signin()>{{ 'SIGNIN_BTN' | translate }}</button> <span ng-hide=$root.signupDisabled>&nbsp; or&nbsp; <a ui-sref=signup>{{ 'SIGNUP_BTN' | translate }}</a></span></div></fieldset></form></div></section>");
$templateCache.put("modules/users/views/authentication/signup-success.client.view.html",
"<section class=\"row auth signup-view success\" data-ng-controller=AuthenticationController><h3 class=\"col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6 text-center\">{{ 'SUCCESS_HEADER' | translate }}</h3><div class=\"col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6\"><h2>{{ 'SUCCESS_TEXT' | translate }}<br><br>{{ 'NOT_ACTIVATED_YET' | translate }}</h2><br><br><p><strong>{{ 'BEFORE_YOU_CONTINUE' | translate }}</strong> <a href=mail:polydaic@gmail.com>polydaic@gmail.com</a></p><div class=\"text-center form-group\"><button type=submit class=\"btn btn-large btn-primary\"><a href=\"/#!/\" style=\"color: white; text-decoration: none\">Continue</a></button></div></div></section>");
$templateCache.put("modules/users/views/authentication/signup.client.view.html",
"<section class=\"row auth signup-view\" data-ng-controller=AuthenticationController><h3 class=\"col-md-12 text-center\">Signup with your email</h3><div class=\"col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6\"><form name=userForm data-ng-submit=signup() class=\"signin form-horizontal\" novalidate autocomplete=off><fieldset><div data-ng-show=error id=signup_errors class=\"text-center text-danger\">Couldn't complete registration due to errors:<br><strong data-ng-bind=error></strong></div><div class=form-group><label for=firstName>{{ 'FIRST_NAME_LABEL' | translate }}</label><input ng-pattern=\"/^[a-zA-Z0-9 \\-.]*$/\" required id=firstName name=firstName class=form-control ng-model=credentials.firstName placeholder=\"First Name\"></div><div class=form-group><label for=lastName>{{ 'LAST_NAME_LABEL' | translate }}</label><input ng-pattern=\"/^[a-zA-Z0-9 \\-.]*$/\" required id=lastName name=lastName class=form-control ng-model=credentials.lastName placeholder=\"Last Name\"></div><div class=\"row form-group\"><div class=\"col-xs-7 field-title\"><b>{{ 'LANGUAGE_LABEL' | translate }}</b></div><div class=\"col-xs-12 field-input\"><select ng-model=user.language required><option ng-repeat=\"language in languages\" ng-selected=\"language == user.language\" value={{language}}>{{language}}</option></select></div></div><hr><div class=form-group><label for=email>{{ 'USERNAME_LABEL' | translate }}</label><input type=email id=username name=username class=form-control ng-model=credentials.username placeholder=Email></div><div class=form-group><label for=email>{{ 'EMAIL_LABEL' | translate }}</label><input type=email id=email name=email class=form-control ng-model=credentials.email placeholder=Email></div><div class=form-group><label for=password>{{ 'PASSWORD_LABEL' | translate }}</label><input type=password id=password name=password class=form-control ng-model=credentials.password placeholder=Password></div><div class=\"text-center form-group\"><button type=submit class=\"btn btn-large btn-primary\">{{ 'SIGNUP_BTN' | translate }}</button></div></fieldset></form></div></section>");
"<section class=\"row auth signup-view\" data-ng-controller=AuthenticationController><h3 class=\"col-md-12 text-center\">{{ 'SIGNUP_HEADER_TEXT' | translate }}</h3><div class=\"col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6\"><form name=userForm data-ng-submit=signup() class=\"signin form-horizontal\" novalidate autocomplete=off><fieldset><div data-ng-show=error id=signup_errors class=\"text-center text-danger\">{{'SIGNUP_ERROR_TEXT' | translate}}:<br><strong data-ng-bind=error></strong></div><div class=form-group><label for=firstName>{{ 'FIRST_NAME_LABEL' | translate }}</label><input ng-pattern=\"/^[a-zA-Z0-9 \\-.]*$/\" required id=firstName name=firstName class=form-control ng-model=credentials.firstName placeholder=\"First Name\"></div><div class=form-group><label for=lastName>{{ 'LAST_NAME_LABEL' | translate }}</label><input ng-pattern=\"/^[a-zA-Z0-9 \\-.]*$/\" required id=lastName name=lastName class=form-control ng-model=credentials.lastName placeholder=\"Last Name\"></div><div class=\"row form-group\"><div class=field-title><b>{{ 'LANGUAGE_LABEL' | translate }}</b></div><div class=field-input><select ng-model=user.language required><option ng-repeat=\"language in languages\" ng-selected=\"language == user.language\" value={{language}}>{{language}}</option></select></div></div><hr><div class=form-group><label for=username>{{ 'USERNAME_LABEL' | translate }}</label><input id=username name=username class=form-control ng-pattern=languageRegExp ng-minlength=4 ng-model=credentials.username placeholder=Username></div><div class=form-group><label for=email>{{ 'EMAIL_LABEL' | translate }}</label><input type=email id=email name=email class=form-control ng-model=credentials.email placeholder=Email></div><div class=form-group><label for=password>{{ 'PASSWORD_LABEL' | translate }}</label><input type=password id=password name=password class=form-control ng-model=credentials.password placeholder=Password></div><div class=\"text-center form-group\"><button type=submit class=\"btn btn-large btn-primary\">{{ 'SIGNUP_BTN' | translate }}</button></div></fieldset></form></div></section>");
$templateCache.put("modules/users/views/password/forgot-password.client.view.html",
"<section class=\"auth row\" data-ng-controller=PasswordController><h3 class=\"col-md-12 text-center\">{{ 'PASSWORD_RESTORE_HEADER' | translate }}</h3><p class=\"small text-center\">{{ 'ENTER_YOUR_EMAIL' | translate }}</p><div class=\"col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6\"><form data-ng-submit=askForPasswordReset() class=\"signin form-horizontal\" autocomplete=off><fieldset><div class=form-group><input id=username name=username class=form-control data-ng-model=credentials.username placeholder=\"{{ 'USERNAME_LABEL' | translate }}\"></div><div class=\"text-center form-group\"><button type=submit class=\"btn btn-primary\">{{ 'UPDATE_PASSWORD_LABEL' | translate }}</button></div><div data-ng-show=error class=\"text-center text-danger\"><strong>{{error}}</strong></div><div data-ng-show=success class=\"text-center text-success\"><strong>{{success}}</strong></div></fieldset></form></div></section>");
$templateCache.put("modules/users/views/password/reset-password-invalid.client.view.html",

File diff suppressed because one or more lines are too long

View file

@ -8,7 +8,7 @@ angular.module('forms').controller('ListFormsController', ['$rootScope', '$scope
$scope.forms = {};
$scope.showCreateModal = false;
$scope.languageRegExp = $scope.myPt = {
$rootScope.languageRegExp = {
regExp: /[@!#$%^&*()\-+={}\[\]|\\/'";:`.,~№?<>]+/i,
test: function(val) {
return !this.regExp.test(val);

View file

@ -15,7 +15,9 @@ angular.module('users').config(['$translateProvider', function ($translateProvid
LANGUAGE_LABEL: 'Language',
EMAIL_LABEL: 'Email',
SIGNUP_WITH_EMAIL: 'Sign up with your email',
SIGNUP_HEADER_TEXT: 'Sign up with your email',
SIGNIN_HEADER_TEXT: 'Signup in with your email',
SIGNUP_ERROR_TEXT: 'Couldn\'t complete registration due to errors',
UPDATE_PROFILE_BTN: 'Update Profile',

View file

@ -1,5 +1,5 @@
<section class="row auth" data-ng-controller="AuthenticationController">
<h3 class="col-md-12 text-center">Sign into your account</h3>
<h3 class="col-md-12 text-center">{{ 'SIGNIN_HEADER_TEXT' | translate }}</h3>
<!-- <div class="col-md-12 text-center">
<a href="/auth/facebook" class="undecorated-link">
<img src="/modules/users/img/buttons/facebook.png">
@ -25,8 +25,8 @@
Error: <strong data-ng-bind="error"></strong>
</div>
<div class="form-group">
<label for="username">{{ 'EMAIL_LABEL' | translate }}</label>
<input type="text" id="username" name="username" class="form-control" data-ng-model="credentials.username" placeholder="{{ 'EMAIL_LABEL' | translate }}">
<label for="username">{{ 'USERNAME_LABEL' | translate }}</label>
<input type="text" id="username" name="username" class="form-control" data-ng-model="credentials.username" placeholder="{{ 'USERNAME_LABEL' | translate }}" ng-pattern="languageRegExp" ng-minlength="4">
</div>
<div class="form-group">
<label for="password">{{ 'PASSWORD_LABEL' | translate }}</label>
@ -46,8 +46,6 @@
</span>
</div>
</fieldset>
</form>
</div>

View file

@ -17,12 +17,12 @@
<img src="/modules/users/img/buttons/github.png">
</a>
</div> -->
<h3 class="col-md-12 text-center">{{ 'SIGNUP_WITH_EMAIL' | translate }}</h3>
<h3 class="col-md-12 text-center">{{ 'SIGNUP_HEADER_TEXT' | translate }}</h3>
<div class="col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6">
<form name="userForm" data-ng-submit="signup()" class="signin form-horizontal" novalidate autocomplete="off">
<form name="userForm" data-ng-submit="signup()" class="signin form-horizontal" autocomplete="off">
<fieldset>
<div data-ng-show="error" id="signup_errors" class="text-center text-danger">
{{'SIGNUP_ERROR_TEXT'' | translate}}: <br>
{{'SIGNUP_ERROR_TEXT' | translate}}: <br>
<strong data-ng-bind="error"></strong>
</div>
<div class="form-group">
@ -34,10 +34,10 @@
<input type="text" ng-pattern="/^[a-zA-Z0-9 \-.]*$/" required id="lastName" name="lastName" class="form-control" ng-model="credentials.lastName" placeholder="Last Name">
</div>
<div class="row form-group">
<div class="col-xs-7 field-title">
<div class="field-title">
<b>{{ 'LANGUAGE_LABEL' | translate }}</b>
</div>
<div class="col-xs-12 field-input">
<div class="field-input">
<select ng-model="user.language" required>
<option ng-repeat="language in languages"
ng-selected="language == user.language"
@ -49,8 +49,8 @@
</div>
<hr>
<div class="form-group">
<label for="email">{{ 'USERNAME_LABEL' | translate }}</label>
<input type="email" id="username" name="username" class="form-control" ng-model="credentials.username" placeholder="Email">
<label for="username">{{ 'USERNAME_LABEL' | translate }}</label>
<input type="text" id="username" name="username" class="form-control" ng-pattern="languageRegExp" ng-minlength="4" ng-model="credentials.username" placeholder="Username">
</div>
<div class="form-group">
<label for="email">{{ 'EMAIL_LABEL' | translate }}</label>