blob: 253a6a646086a034a0ca7dd3a069161770b0666f [file] [log] [blame]
Yoshie Muranakafa562732019-07-17 11:23:15 -05001window.angular && (function(angular) {
2 'use strict';
3
4 /**
5 * Password confirmation validator
6 *
7 * To use, add attribute directive to password confirmation input field
8 * Also include attribute 'first-password' with value set to first password
9 * to check against
10 *
11 * <input password-confirmation first-password="ctrl.password"
12 * name="passwordConfirm">
13 *
14 */
15 angular.module('app.common.directives')
16 .directive('passwordConfirm', function() {
17 return {
18 restrict: 'A',
19 require: 'ngModel',
20 scope: {firstPassword: '='},
21 link: function(scope, element, attrs, controller) {
22 if (controller === undefined) {
23 return;
24 }
25 controller.$validators.passwordConfirm =
26 (modelValue, viewValue) => {
27 const firstPassword =
28 scope.firstPassword ? scope.firstPassword : '';
29 const secondPassword = modelValue || viewValue || '';
30 if (firstPassword == secondPassword) {
31 return true;
32 } else {
33 return false;
34 }
35 };
36 element.on('keyup', () => {
37 controller.$validate();
38 });
39 }
40 };
41 });
42})(window.angular);