mirror of
https://github.com/taobataoma/meanTorrent.git
synced 2026-03-06 12:11:02 +01:00
45 lines
1.5 KiB
JavaScript
45 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
angular.module('users')
|
|
.directive('passwordValidator', ['PasswordValidator', function(PasswordValidator) {
|
|
return {
|
|
require: 'ngModel',
|
|
link: function(scope, element, attrs, ngModel) {
|
|
ngModel.$validators.requirements = function (password) {
|
|
var status = true;
|
|
if (password) {
|
|
var result = PasswordValidator.getResult(password);
|
|
var requirementsIdx = 0;
|
|
|
|
// Requirements Meter - visual indicator for users
|
|
var requirementsMeter = [
|
|
{ color: 'danger', progress: '20' },
|
|
{ color: 'warning', progress: '40' },
|
|
{ color: 'info', progress: '60' },
|
|
{ color: 'primary', progress: '80' },
|
|
{ color: 'success', progress: '100' }
|
|
];
|
|
|
|
if (result.errors.length < requirementsMeter.length) {
|
|
requirementsIdx = requirementsMeter.length - result.errors.length - 1;
|
|
}
|
|
|
|
scope.requirementsColor = requirementsMeter[requirementsIdx].color;
|
|
scope.requirementsProgress = requirementsMeter[requirementsIdx].progress;
|
|
|
|
if (result.errors.length) {
|
|
scope.popoverMsg = PasswordValidator.getPopoverMsg();
|
|
scope.passwordErrors = result.errors;
|
|
status = false;
|
|
} else {
|
|
scope.popoverMsg = '';
|
|
scope.passwordErrors = [];
|
|
status = true;
|
|
}
|
|
}
|
|
return status;
|
|
};
|
|
}
|
|
};
|
|
}]);
|