From f2f36e732f99e56339a0da4199aca934dd1d6272 Mon Sep 17 00:00:00 2001 From: Findeton Date: Thu, 5 Oct 2017 16:37:12 -0500 Subject: [PATCH 01/23] show resend when required --- .../code-field-directive.html | 2 +- .../login-directive/login-directive.js | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/avRegistration/fields/code-field-directive/code-field-directive.html b/avRegistration/fields/code-field-directive/code-field-directive.html index 5ee8bce0..6faa2847 100644 --- a/avRegistration/fields/code-field-directive/code-field-directive.html +++ b/avRegistration/fields/code-field-directive/code-field-directive.html @@ -19,7 +19,7 @@ required />

- + 0) { @@ -187,6 +190,20 @@ angular.module('avRegistration') scope.login_fields = Authmethod.getLoginFields(authevent); scope.telIndex = -1; scope.telField = null; + scope.allowUserResend = (function () { + var ret = false; + var href = $location.path(); + var adminMatch = href.match(/^\/admin\//); + var electionsMatch = href.match(/^\/(elections|election)\/([0-9]+)\//); + + if (_.isArray(adminMatch)) { + ret = true; + } else if (_.isArray(electionsMatch) && 3 === electionsMatch.length) { + ret = (_.isObject(authevent['auth_method_config'] && + true === authevent['auth_method_config']['allow_user_resend'])); + } + return ret; + })(); var fields = _.map( scope.login_fields, From dd1b385bbb13767c5240bb1ead30c33baf49fb93 Mon Sep 17 00:00:00 2001 From: Findeton Date: Thu, 5 Oct 2017 16:48:36 -0500 Subject: [PATCH 02/23] grunt build --- dist/appCommon-v103111.6.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/dist/appCommon-v103111.6.js b/dist/appCommon-v103111.6.js index 4e51190b..dc89339d 100644 --- a/dist/appCommon-v103111.6.js +++ b/dist/appCommon-v103111.6.js @@ -219,7 +219,7 @@ angular.module("avRegistration").factory("Authmethod", [ "$http", "$cookies", "C }, authmethod; } ]), angular.module("avRegistration").controller("LoginController", [ "$scope", "$stateParams", "$filter", "ConfigService", "$i18next", function($scope, $stateParams, $filter, ConfigService, $i18next) { $scope.event_id = $stateParams.id, $scope.code = $stateParams.code, $scope.email = $stateParams.email; -} ]), angular.module("avRegistration").directive("avLogin", [ "Authmethod", "StateDataService", "$parse", "$state", "$cookies", "$i18next", "$window", "$timeout", "ConfigService", function(Authmethod, StateDataService, $parse, $state, $cookies, $i18next, $window, $timeout, ConfigService) { +} ]), angular.module("avRegistration").directive("avLogin", [ "Authmethod", "StateDataService", "$parse", "$state", "$location", "$cookies", "$i18next", "$window", "$timeout", "ConfigService", function(Authmethod, StateDataService, $parse, $state, $location, $cookies, $i18next, $window, $timeout, ConfigService) { function link(scope, element, attrs) { function isValidTel(inputName) { return !!document.getElementById(inputName) && angular.element(document.getElementById(inputName)).intlTelInput("isValidNumber"); @@ -227,9 +227,10 @@ angular.module("avRegistration").factory("Authmethod", [ "$http", "$cookies", "C var adminId = ConfigService.freeAuthId + "", autheventid = attrs.eventId; scope.orgName = ConfigService.organization.orgName, $cookies["authevent_" + adminId] && $cookies["authevent_" + adminId] === adminId && autheventid === adminId && $cookies["auth_authevent_" + adminId] && ($window.location.href = "/admin/elections"), scope.sendingData = !1, scope.currentFormStep = 0, scope.stateData = StateDataService.getData(), - scope.signupLink = ConfigService.signupLink, scope.code = null, attrs.code && attrs.code.length > 0 && (scope.code = attrs.code), - scope.email = null, attrs.email && attrs.email.length > 0 && (scope.email = attrs.email), - scope.isAdmin = !1, autheventid === adminId && (scope.isAdmin = !0), scope.resendAuthCode = function(field) { + scope.signupLink = ConfigService.signupLink, scope.allowUserResend = !1, scope.code = null, + attrs.code && attrs.code.length > 0 && (scope.code = attrs.code), scope.email = null, + attrs.email && attrs.email.length > 0 && (scope.email = attrs.email), scope.isAdmin = !1, + autheventid === adminId && (scope.isAdmin = !0), scope.resendAuthCode = function(field) { if (!scope.sendingData && _.contains([ "sms", "sms-otp" ], scope.method) && -1 !== scope.telIndex && isValidTel("input" + scope.telIndex)) { field && (field.value = ""); var data = {}; @@ -277,7 +278,11 @@ angular.module("avRegistration").factory("Authmethod", [ "$http", "$cookies", "C }, scope.apply = function(authevent) { scope.method = authevent.auth_method, scope.name = authevent.name, scope.registrationAllowed = "open" === authevent.census, scope.login_fields = Authmethod.getLoginFields(authevent), scope.telIndex = -1, - scope.telField = null; + scope.telField = null, scope.allowUserResend = function() { + var ret = !1, href = $location.path(), adminMatch = href.match(/^\/admin\//), electionsMatch = href.match(/^\/(elections|election)\/([0-9]+)\//); + return _.isArray(adminMatch) ? ret = !0 : _.isArray(electionsMatch) && 3 === electionsMatch.length && (ret = _.isObject(authevent.auth_method_config && !0 === authevent.auth_method_config.allow_user_resend)), + ret; + }(); var fields = _.map(scope.login_fields, function(el, index) { return scope.stateData[el.name] ? (el.value = scope.stateData[el.name], el.disabled = !0) : (el.value = null, el.disabled = !1), "email" === el.type && null !== scope.email ? (el.value = scope.email, @@ -1113,7 +1118,7 @@ angular.module("jm.i18next").config([ "$i18nextProvider", "ConfigServiceProvider $templateCache.put("avRegistration/field-directive/field-directive.html", '

'), $templateCache.put("avRegistration/fields/bool-field-directive/bool-field-directive.html", '

'), $templateCache.put("avRegistration/fields/captcha-field-directive/captcha-field-directive.html", '

{{field.help}}

{{authMethod.captcha_status}}
'), - $templateCache.put("avRegistration/fields/code-field-directive/code-field-directive.html", '
'), + $templateCache.put("avRegistration/fields/code-field-directive/code-field-directive.html", '

'), $templateCache.put("avRegistration/fields/dni-field-directive/dni-field-directive.html", '

'), $templateCache.put("avRegistration/fields/email-field-directive/email-field-directive.html", '
'), $templateCache.put("avRegistration/fields/image-field-directive/image-field-directive.html", '

'), From 79d7812c2f7a339006d2be369891dbc58531bf6b Mon Sep 17 00:00:00 2001 From: Findeton Date: Fri, 6 Oct 2017 08:59:19 -0500 Subject: [PATCH 03/23] refactor --- avRegistration/login-directive/login-directive.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/avRegistration/login-directive/login-directive.js b/avRegistration/login-directive/login-directive.js index 8bbcb1f7..f6eccefd 100644 --- a/avRegistration/login-directive/login-directive.js +++ b/avRegistration/login-directive/login-directive.js @@ -199,8 +199,7 @@ angular.module('avRegistration') if (_.isArray(adminMatch)) { ret = true; } else if (_.isArray(electionsMatch) && 3 === electionsMatch.length) { - ret = (_.isObject(authevent['auth_method_config'] && - true === authevent['auth_method_config']['allow_user_resend'])); + ret = (true === authevent['allow_user_resend']); } return ret; })(); From 0b725a466645f6985f89c40a7e54b5504d72748f Mon Sep 17 00:00:00 2001 From: Findeton Date: Fri, 6 Oct 2017 09:03:00 -0500 Subject: [PATCH 04/23] grunt build --- dist/appCommon-v103111.6.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/appCommon-v103111.6.js b/dist/appCommon-v103111.6.js index dc89339d..9c622d38 100644 --- a/dist/appCommon-v103111.6.js +++ b/dist/appCommon-v103111.6.js @@ -280,7 +280,7 @@ angular.module("avRegistration").factory("Authmethod", [ "$http", "$cookies", "C scope.login_fields = Authmethod.getLoginFields(authevent), scope.telIndex = -1, scope.telField = null, scope.allowUserResend = function() { var ret = !1, href = $location.path(), adminMatch = href.match(/^\/admin\//), electionsMatch = href.match(/^\/(elections|election)\/([0-9]+)\//); - return _.isArray(adminMatch) ? ret = !0 : _.isArray(electionsMatch) && 3 === electionsMatch.length && (ret = _.isObject(authevent.auth_method_config && !0 === authevent.auth_method_config.allow_user_resend)), + return _.isArray(adminMatch) ? ret = !0 : _.isArray(electionsMatch) && 3 === electionsMatch.length && (ret = !0 === authevent.allow_user_resend), ret; }(); var fields = _.map(scope.login_fields, function(el, index) { From 1b945b004f2d971c20efcedf7cccc587df956bd2 Mon Sep 17 00:00:00 2001 From: Findeton Date: Mon, 9 Oct 2017 10:23:39 -0500 Subject: [PATCH 05/23] refactor --- avRegistration/login-directive/login-directive.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/avRegistration/login-directive/login-directive.js b/avRegistration/login-directive/login-directive.js index f6eccefd..decea386 100644 --- a/avRegistration/login-directive/login-directive.js +++ b/avRegistration/login-directive/login-directive.js @@ -199,7 +199,9 @@ angular.module('avRegistration') if (_.isArray(adminMatch)) { ret = true; } else if (_.isArray(electionsMatch) && 3 === electionsMatch.length) { - ret = (true === authevent['allow_user_resend']); + ret = (_.isObject(authevent.auth_method_config) && + _.isObject(authevent.auth_method_config.config) && + true === authevent.auth_method_config.config.allow_user_resend); } return ret; })(); From b7805fd3c493d900734adc90791b445a9c066789 Mon Sep 17 00:00:00 2001 From: Findeton Date: Mon, 9 Oct 2017 10:25:41 -0500 Subject: [PATCH 06/23] grunt build --- dist/appCommon-v103111.6.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/appCommon-v103111.6.js b/dist/appCommon-v103111.6.js index 9c622d38..9a9019ba 100644 --- a/dist/appCommon-v103111.6.js +++ b/dist/appCommon-v103111.6.js @@ -280,7 +280,7 @@ angular.module("avRegistration").factory("Authmethod", [ "$http", "$cookies", "C scope.login_fields = Authmethod.getLoginFields(authevent), scope.telIndex = -1, scope.telField = null, scope.allowUserResend = function() { var ret = !1, href = $location.path(), adminMatch = href.match(/^\/admin\//), electionsMatch = href.match(/^\/(elections|election)\/([0-9]+)\//); - return _.isArray(adminMatch) ? ret = !0 : _.isArray(electionsMatch) && 3 === electionsMatch.length && (ret = !0 === authevent.allow_user_resend), + return _.isArray(adminMatch) ? ret = !0 : _.isArray(electionsMatch) && 3 === electionsMatch.length && (ret = _.isObject(authevent.auth_method_config) && _.isObject(authevent.auth_method_config.config) && !0 === authevent.auth_method_config.config.allow_user_resend), ret; }(); var fields = _.map(scope.login_fields, function(el, index) { From 1ec18b98491733de0785776df1cab5c3855b449b Mon Sep 17 00:00:00 2001 From: Findeton Date: Mon, 9 Oct 2017 11:48:13 -0500 Subject: [PATCH 07/23] add email to valid resend auth code --- avRegistration/login-directive/login-directive.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/avRegistration/login-directive/login-directive.js b/avRegistration/login-directive/login-directive.js index decea386..fdfa6b61 100644 --- a/avRegistration/login-directive/login-directive.js +++ b/avRegistration/login-directive/login-directive.js @@ -71,7 +71,7 @@ angular.module('avRegistration') } scope.resendAuthCode = function(field) { - if (scope.sendingData || !_.contains(["sms", "sms-otp"], scope.method)) { + if (scope.sendingData || !_.contains(["email","sms", "sms-otp"], scope.method)) { return; } From bb85a1ebf8f393dc90cddb00b9261f80647fbf2f Mon Sep 17 00:00:00 2001 From: Findeton Date: Mon, 9 Oct 2017 11:48:54 -0500 Subject: [PATCH 08/23] grunt build --- dist/appCommon-v103111.6.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/appCommon-v103111.6.js b/dist/appCommon-v103111.6.js index 9a9019ba..d202ad9a 100644 --- a/dist/appCommon-v103111.6.js +++ b/dist/appCommon-v103111.6.js @@ -231,7 +231,7 @@ angular.module("avRegistration").factory("Authmethod", [ "$http", "$cookies", "C attrs.code && attrs.code.length > 0 && (scope.code = attrs.code), scope.email = null, attrs.email && attrs.email.length > 0 && (scope.email = attrs.email), scope.isAdmin = !1, autheventid === adminId && (scope.isAdmin = !0), scope.resendAuthCode = function(field) { - if (!scope.sendingData && _.contains([ "sms", "sms-otp" ], scope.method) && -1 !== scope.telIndex && isValidTel("input" + scope.telIndex)) { + if (!scope.sendingData && _.contains([ "email", "sms", "sms-otp" ], scope.method) && -1 !== scope.telIndex && isValidTel("input" + scope.telIndex)) { field && (field.value = ""); var data = {}; data.tlf = scope.telField.value, scope.sendingData = !0, Authmethod.resendAuthCode(data, autheventid).success(function(rcvData) { From 0f84fab51201af316a19929a4b894ea0bfa25698 Mon Sep 17 00:00:00 2001 From: Findeton Date: Mon, 9 Oct 2017 14:51:58 -0500 Subject: [PATCH 09/23] allow email resend --- .../login-directive/login-directive.js | 36 +++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/avRegistration/login-directive/login-directive.js b/avRegistration/login-directive/login-directive.js index fdfa6b61..7340be21 100644 --- a/avRegistration/login-directive/login-directive.js +++ b/avRegistration/login-directive/login-directive.js @@ -25,7 +25,8 @@ angular.module('avRegistration') $i18next, $window, $timeout, - ConfigService) { + ConfigService, + Patterns) { // we use it as something similar to a controller here function link(scope, element, attrs) { var adminId = ConfigService.freeAuthId + ''; @@ -69,18 +70,36 @@ angular.module('avRegistration') var telInput = angular.element(document.getElementById(inputName)); return telInput.intlTelInput("isValidNumber"); } + + function isValidEmail(email) { + val pattern = Patterns.get('email'); + return null !== email.match(pattern); + } scope.resendAuthCode = function(field) { - if (scope.sendingData || !_.contains(["email","sms", "sms-otp"], scope.method)) { + if (scope.sendingData || !_.contains(["email", "sms", "sms-otp"], scope.method)) { return; } + var data = {}; - if (scope.telIndex === -1) { - return; - } + // sms or sms-otp + if (_.contains(["sms", "sms-otp"], scope.method)) { - if (!isValidTel("input" + scope.telIndex)) { - return; + if (scope.telIndex === -1) { + return; + } + + if (!isValidTel("input" + scope.telIndex)) { + return; + } + + data['tlf'] = scope.telField.value; + } else if ("email" === scope.method) { // email + if (!isValidEmail(scope.email)) { + return; + } + + data['email'] = scope.email; } // reset code field, as we are going to send a new one @@ -88,9 +107,6 @@ angular.module('avRegistration') field.value = ""; } - var data = {}; - data['tlf'] = scope.telField.value; - scope.sendingData = true; Authmethod.resendAuthCode(data, autheventid) .success(function(rcvData) { From 39063400bb7628fcb0309b17896f3b7e6a76f477 Mon Sep 17 00:00:00 2001 From: Findeton Date: Mon, 9 Oct 2017 14:53:44 -0500 Subject: [PATCH 10/23] fix syntax, grunt build --- .../login-directive/login-directive.js | 2 +- dist/appCommon-v103111.6.js | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/avRegistration/login-directive/login-directive.js b/avRegistration/login-directive/login-directive.js index 7340be21..efd66612 100644 --- a/avRegistration/login-directive/login-directive.js +++ b/avRegistration/login-directive/login-directive.js @@ -72,7 +72,7 @@ angular.module('avRegistration') } function isValidEmail(email) { - val pattern = Patterns.get('email'); + var pattern = Patterns.get('email'); return null !== email.match(pattern); } diff --git a/dist/appCommon-v103111.6.js b/dist/appCommon-v103111.6.js index d202ad9a..63dca13b 100644 --- a/dist/appCommon-v103111.6.js +++ b/dist/appCommon-v103111.6.js @@ -219,11 +219,15 @@ angular.module("avRegistration").factory("Authmethod", [ "$http", "$cookies", "C }, authmethod; } ]), angular.module("avRegistration").controller("LoginController", [ "$scope", "$stateParams", "$filter", "ConfigService", "$i18next", function($scope, $stateParams, $filter, ConfigService, $i18next) { $scope.event_id = $stateParams.id, $scope.code = $stateParams.code, $scope.email = $stateParams.email; -} ]), angular.module("avRegistration").directive("avLogin", [ "Authmethod", "StateDataService", "$parse", "$state", "$location", "$cookies", "$i18next", "$window", "$timeout", "ConfigService", function(Authmethod, StateDataService, $parse, $state, $location, $cookies, $i18next, $window, $timeout, ConfigService) { +} ]), angular.module("avRegistration").directive("avLogin", [ "Authmethod", "StateDataService", "$parse", "$state", "$location", "$cookies", "$i18next", "$window", "$timeout", "ConfigService", "Patterns", function(Authmethod, StateDataService, $parse, $state, $location, $cookies, $i18next, $window, $timeout, ConfigService, Patterns) { function link(scope, element, attrs) { function isValidTel(inputName) { return !!document.getElementById(inputName) && angular.element(document.getElementById(inputName)).intlTelInput("isValidNumber"); } + function isValidEmail(email) { + var pattern = Patterns.get("email"); + return null !== email.match(pattern); + } var adminId = ConfigService.freeAuthId + "", autheventid = attrs.eventId; scope.orgName = ConfigService.organization.orgName, $cookies["authevent_" + adminId] && $cookies["authevent_" + adminId] === adminId && autheventid === adminId && $cookies["auth_authevent_" + adminId] && ($window.location.href = "/admin/elections"), scope.sendingData = !1, scope.currentFormStep = 0, scope.stateData = StateDataService.getData(), @@ -231,10 +235,17 @@ angular.module("avRegistration").factory("Authmethod", [ "$http", "$cookies", "C attrs.code && attrs.code.length > 0 && (scope.code = attrs.code), scope.email = null, attrs.email && attrs.email.length > 0 && (scope.email = attrs.email), scope.isAdmin = !1, autheventid === adminId && (scope.isAdmin = !0), scope.resendAuthCode = function(field) { - if (!scope.sendingData && _.contains([ "email", "sms", "sms-otp" ], scope.method) && -1 !== scope.telIndex && isValidTel("input" + scope.telIndex)) { - field && (field.value = ""); + if (!scope.sendingData && _.contains([ "email", "sms", "sms-otp" ], scope.method)) { var data = {}; - data.tlf = scope.telField.value, scope.sendingData = !0, Authmethod.resendAuthCode(data, autheventid).success(function(rcvData) { + if (_.contains([ "sms", "sms-otp" ], scope.method)) { + if (-1 === scope.telIndex) return; + if (!isValidTel("input" + scope.telIndex)) return; + data.tlf = scope.telField.value; + } else if ("email" === scope.method) { + if (!isValidEmail(scope.email)) return; + data.email = scope.email; + } + field && (field.value = ""), scope.sendingData = !0, Authmethod.resendAuthCode(data, autheventid).success(function(rcvData) { scope.telField.disabled = !0, scope.currentFormStep = 1, $timeout(scope.sendingDataTimeout, 3e3); }).error(function(error) { $timeout(scope.sendingDataTimeout, 3e3), scope.error = $i18next("avRegistration.errorSendingAuthCode"); From be1ec10000c71e433181d4f04d9941a5ead1704e Mon Sep 17 00:00:00 2001 From: Findeton Date: Mon, 9 Oct 2017 16:21:00 -0500 Subject: [PATCH 11/23] fix disabled when clicked resend auth --- .../login-directive/login-directive.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/avRegistration/login-directive/login-directive.js b/avRegistration/login-directive/login-directive.js index efd66612..7de9cfb9 100644 --- a/avRegistration/login-directive/login-directive.js +++ b/avRegistration/login-directive/login-directive.js @@ -95,7 +95,7 @@ angular.module('avRegistration') data['tlf'] = scope.telField.value; } else if ("email" === scope.method) { // email - if (!isValidEmail(scope.email)) { + if (-1 === scope.emailIndex || !isValidEmail(scope.email)) { return; } @@ -110,7 +110,11 @@ angular.module('avRegistration') scope.sendingData = true; Authmethod.resendAuthCode(data, autheventid) .success(function(rcvData) { - scope.telField.disabled = true; + if (_.contains(["sms", "sms-otp"], scope.method)) { + scope.telField.disabled = true; + } else if ("email" === scope.method) { + scope.login_fields[scope.emailIndex].disabled = true; + } scope.currentFormStep = 1; $timeout(scope.sendingDataTimeout, 3000); }) @@ -205,6 +209,7 @@ angular.module('avRegistration') scope.registrationAllowed = (authevent['census'] === 'open'); scope.login_fields = Authmethod.getLoginFields(authevent); scope.telIndex = -1; + scope.emailIndex = -1; scope.telField = null; scope.allowUserResend = (function () { var ret = false; @@ -232,9 +237,12 @@ angular.module('avRegistration') el.value = null; el.disabled = false; } - if (el.type === "email" && scope.email !== null) { - el.value = scope.email; - el.disabled = true; + if (el.type === "email") { + if (scope.email !== null) { + el.value = scope.email; + el.disabled = true; + } + scope.emailIndex = index; } else if (el.type === "code" && scope.code !== null) { el.value = scope.code.trim().replace(/ |\n|\t|-|_/g,'').toUpperCase(); el.disabled = true; From f767f9a083d9b8054b757419ab87b3b6ddddab56 Mon Sep 17 00:00:00 2001 From: Findeton Date: Mon, 9 Oct 2017 16:23:10 -0500 Subject: [PATCH 12/23] grunt build --- dist/appCommon-v103111.6.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/dist/appCommon-v103111.6.js b/dist/appCommon-v103111.6.js index 63dca13b..da4c6e7f 100644 --- a/dist/appCommon-v103111.6.js +++ b/dist/appCommon-v103111.6.js @@ -242,11 +242,12 @@ angular.module("avRegistration").factory("Authmethod", [ "$http", "$cookies", "C if (!isValidTel("input" + scope.telIndex)) return; data.tlf = scope.telField.value; } else if ("email" === scope.method) { - if (!isValidEmail(scope.email)) return; + if (-1 === scope.emailIndex || !isValidEmail(scope.email)) return; data.email = scope.email; } field && (field.value = ""), scope.sendingData = !0, Authmethod.resendAuthCode(data, autheventid).success(function(rcvData) { - scope.telField.disabled = !0, scope.currentFormStep = 1, $timeout(scope.sendingDataTimeout, 3e3); + _.contains([ "sms", "sms-otp" ], scope.method) ? scope.telField.disabled = !0 : "email" === scope.method && (scope.login_fields[scope.emailIndex].disabled = !0), + scope.currentFormStep = 1, $timeout(scope.sendingDataTimeout, 3e3); }).error(function(error) { $timeout(scope.sendingDataTimeout, 3e3), scope.error = $i18next("avRegistration.errorSendingAuthCode"); }); @@ -289,15 +290,15 @@ angular.module("avRegistration").factory("Authmethod", [ "$http", "$cookies", "C }, scope.apply = function(authevent) { scope.method = authevent.auth_method, scope.name = authevent.name, scope.registrationAllowed = "open" === authevent.census, scope.login_fields = Authmethod.getLoginFields(authevent), scope.telIndex = -1, - scope.telField = null, scope.allowUserResend = function() { + scope.emailIndex = -1, scope.telField = null, scope.allowUserResend = function() { var ret = !1, href = $location.path(), adminMatch = href.match(/^\/admin\//), electionsMatch = href.match(/^\/(elections|election)\/([0-9]+)\//); return _.isArray(adminMatch) ? ret = !0 : _.isArray(electionsMatch) && 3 === electionsMatch.length && (ret = _.isObject(authevent.auth_method_config) && _.isObject(authevent.auth_method_config.config) && !0 === authevent.auth_method_config.config.allow_user_resend), ret; }(); var fields = _.map(scope.login_fields, function(el, index) { return scope.stateData[el.name] ? (el.value = scope.stateData[el.name], el.disabled = !0) : (el.value = null, - el.disabled = !1), "email" === el.type && null !== scope.email ? (el.value = scope.email, - el.disabled = !0) : "code" === el.type && null !== scope.code ? (el.value = scope.code.trim().replace(/ |\n|\t|-|_/g, "").toUpperCase(), + el.disabled = !1), "email" === el.type ? (null !== scope.email && (el.value = scope.email, + el.disabled = !0), scope.emailIndex = index) : "code" === el.type && null !== scope.code ? (el.value = scope.code.trim().replace(/ |\n|\t|-|_/g, "").toUpperCase(), el.disabled = !0) : "tlf" === el.type && "sms" === scope.method ? (null !== scope.email && -1 === scope.email.indexOf("@") && (el.value = scope.email, el.disabled = !0), scope.telIndex = index + 1, scope.telField = el) : "tlf" === el.type && "sms-otp" === scope.method && (null !== scope.email && -1 === scope.email.indexOf("@") && (el.value = scope.email, el.disabled = !0, scope.currentFormStep = 1), scope.telIndex = index + 1, scope.telField = el), From cfd0ad7ec24fa38aa61d246a725402c17747633a Mon Sep 17 00:00:00 2001 From: Findeton Date: Mon, 9 Oct 2017 16:37:19 -0500 Subject: [PATCH 13/23] fix email getter issue --- avRegistration/login-directive/login-directive.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/avRegistration/login-directive/login-directive.js b/avRegistration/login-directive/login-directive.js index 7de9cfb9..990aa8a3 100644 --- a/avRegistration/login-directive/login-directive.js +++ b/avRegistration/login-directive/login-directive.js @@ -95,11 +95,18 @@ angular.module('avRegistration') data['tlf'] = scope.telField.value; } else if ("email" === scope.method) { // email - if (-1 === scope.emailIndex || !isValidEmail(scope.email)) { + if (-1 === scope.emailIndex) { + return; + } + var email = scope.email; + if (null === email) { + email = scope.login_fields[scope.emailIndex].value; + } + if (!isValidEmail(email)) { return; } - data['email'] = scope.email; + data['email'] = email; } // reset code field, as we are going to send a new one From c80717ad8c0f182ed8ea29dab8edf58ed706aa24 Mon Sep 17 00:00:00 2001 From: Findeton Date: Mon, 9 Oct 2017 16:39:04 -0500 Subject: [PATCH 14/23] grunt build --- dist/appCommon-v103111.6.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dist/appCommon-v103111.6.js b/dist/appCommon-v103111.6.js index da4c6e7f..b48475d3 100644 --- a/dist/appCommon-v103111.6.js +++ b/dist/appCommon-v103111.6.js @@ -242,8 +242,10 @@ angular.module("avRegistration").factory("Authmethod", [ "$http", "$cookies", "C if (!isValidTel("input" + scope.telIndex)) return; data.tlf = scope.telField.value; } else if ("email" === scope.method) { - if (-1 === scope.emailIndex || !isValidEmail(scope.email)) return; - data.email = scope.email; + if (-1 === scope.emailIndex) return; + var email = scope.email; + if (null === email && (email = scope.login_fields[scope.emailIndex].value), !isValidEmail(email)) return; + data.email = email; } field && (field.value = ""), scope.sendingData = !0, Authmethod.resendAuthCode(data, autheventid).success(function(rcvData) { _.contains([ "sms", "sms-otp" ], scope.method) ? scope.telField.disabled = !0 : "email" === scope.method && (scope.login_fields[scope.emailIndex].disabled = !0), From 6208c6e7cc1c8e6a2a0fdc13bcf0e842676a89f5 Mon Sep 17 00:00:00 2001 From: Findeton Date: Tue, 10 Oct 2017 17:56:26 -0500 Subject: [PATCH 15/23] trying to fix error --- .../code-field-directive/code-field-directive.html | 2 +- .../code-field-directive/code-field-directive.js | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/avRegistration/fields/code-field-directive/code-field-directive.html b/avRegistration/fields/code-field-directive/code-field-directive.html index 6faa2847..8259f475 100644 --- a/avRegistration/fields/code-field-directive/code-field-directive.html +++ b/avRegistration/fields/code-field-directive/code-field-directive.html @@ -19,7 +19,7 @@ required />

- + Date: Tue, 10 Oct 2017 17:57:10 -0500 Subject: [PATCH 16/23] fix syntax --- .../fields/code-field-directive/code-field-directive.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/avRegistration/fields/code-field-directive/code-field-directive.js b/avRegistration/fields/code-field-directive/code-field-directive.js index 30c904bf..1a84f1a3 100644 --- a/avRegistration/fields/code-field-directive/code-field-directive.js +++ b/avRegistration/fields/code-field-directive/code-field-directive.js @@ -29,7 +29,7 @@ angular.module('avRegistration') return data.showUserSendAuthCode; }; - if ('sms' === method || 'sms-otp' === method) { + if ('sms' === scope.method || 'sms-otp' === scope.method) { var telInput = angular.element(document.getElementById('input' + scope.telIndex)); } From 61cddfbfa0abd86f5f75c01c8fce51619b27a13f Mon Sep 17 00:00:00 2001 From: Findeton Date: Tue, 10 Oct 2017 17:59:24 -0500 Subject: [PATCH 17/23] grunt build --- dist/appCommon-v103111.6.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/dist/appCommon-v103111.6.js b/dist/appCommon-v103111.6.js index b48475d3..bd146677 100644 --- a/dist/appCommon-v103111.6.js +++ b/dist/appCommon-v103111.6.js @@ -471,13 +471,14 @@ angular.module("avRegistration").factory("Authmethod", [ "$http", "$cookies", "C function link(scope, element, attrs) { scope.codePattern = /[abcdefghjklmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789-]{8,9}/; var rand_code = "" + _.random(1e12); - scope.code_id = "input" + scope.index + rand_code, scope.showResendAuthCode = function() { + if (scope.code_id = "input" + scope.index + rand_code, scope.showResendAuthCode = function() { var data = { showUserSendAuthCode: !0 }; return Plugins.hook("hide-user-send-auth-code", data), data.showUserSendAuthCode; - }, scope.isValidTel = function(inputName) { - return !!document.getElementById(inputName) && angular.element(document.getElementById(inputName)).intlTelInput("isValidNumber"); + }, "sms" === scope.method || "sms-otp" === scope.method) var telInput = angular.element(document.getElementById("input" + scope.telIndex)); + scope.isValidTel = function() { + return telInput.intlTelInput("isValidNumber"); }; } return { @@ -1132,7 +1133,7 @@ angular.module("jm.i18next").config([ "$i18nextProvider", "ConfigServiceProvider $templateCache.put("avRegistration/field-directive/field-directive.html", '

'), $templateCache.put("avRegistration/fields/bool-field-directive/bool-field-directive.html", '

'), $templateCache.put("avRegistration/fields/captcha-field-directive/captcha-field-directive.html", '

{{field.help}}

{{authMethod.captcha_status}}
'), - $templateCache.put("avRegistration/fields/code-field-directive/code-field-directive.html", '
'), + $templateCache.put("avRegistration/fields/code-field-directive/code-field-directive.html", '

'), $templateCache.put("avRegistration/fields/dni-field-directive/dni-field-directive.html", '

'), $templateCache.put("avRegistration/fields/email-field-directive/email-field-directive.html", '
'), $templateCache.put("avRegistration/fields/image-field-directive/image-field-directive.html", '

'), From ccdd1b3f2b71ac1a514850c5caa4c1fbb3f33fb9 Mon Sep 17 00:00:00 2001 From: Findeton Date: Tue, 10 Oct 2017 18:48:04 -0500 Subject: [PATCH 18/23] refactor --- .../code-field-directive/code-field-directive.html | 2 +- .../code-field-directive/code-field-directive.js | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/avRegistration/fields/code-field-directive/code-field-directive.html b/avRegistration/fields/code-field-directive/code-field-directive.html index 8259f475..5f328574 100644 --- a/avRegistration/fields/code-field-directive/code-field-directive.html +++ b/avRegistration/fields/code-field-directive/code-field-directive.html @@ -19,7 +19,7 @@ required />

- + Date: Tue, 10 Oct 2017 19:14:09 -0500 Subject: [PATCH 19/23] grunt build --- .../code-field-directive/code-field-directive.js | 2 +- dist/appCommon-v103111.6.js | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/avRegistration/fields/code-field-directive/code-field-directive.js b/avRegistration/fields/code-field-directive/code-field-directive.js index dea6ee29..0f2014dc 100644 --- a/avRegistration/fields/code-field-directive/code-field-directive.js +++ b/avRegistration/fields/code-field-directive/code-field-directive.js @@ -37,7 +37,7 @@ angular.module('avRegistration') function (newValue, oldValue) { scope.isValidTel = telInput.intlTelInput("isValidNumber"); }, - true); + true); } } return { diff --git a/dist/appCommon-v103111.6.js b/dist/appCommon-v103111.6.js index bd146677..2ca0766a 100644 --- a/dist/appCommon-v103111.6.js +++ b/dist/appCommon-v103111.6.js @@ -476,10 +476,12 @@ angular.module("avRegistration").factory("Authmethod", [ "$http", "$cookies", "C showUserSendAuthCode: !0 }; return Plugins.hook("hide-user-send-auth-code", data), data.showUserSendAuthCode; - }, "sms" === scope.method || "sms-otp" === scope.method) var telInput = angular.element(document.getElementById("input" + scope.telIndex)); - scope.isValidTel = function() { - return telInput.intlTelInput("isValidNumber"); - }; + }, "sms" === scope.method || "sms-otp" === scope.method) { + var telInput = angular.element(document.getElementById("input" + scope.telIndex)); + scope.isValidTel = telInput.intlTelInput("isValidNumber"), scope.$watch("login_fields[" + scope.telIndex + "].value", function(newValue, oldValue) { + scope.isValidTel = telInput.intlTelInput("isValidNumber"); + }, !0); + } } return { restrict: "AE", @@ -1133,7 +1135,7 @@ angular.module("jm.i18next").config([ "$i18nextProvider", "ConfigServiceProvider $templateCache.put("avRegistration/field-directive/field-directive.html", '

'), $templateCache.put("avRegistration/fields/bool-field-directive/bool-field-directive.html", '

'), $templateCache.put("avRegistration/fields/captcha-field-directive/captcha-field-directive.html", '

{{field.help}}

{{authMethod.captcha_status}}
'), - $templateCache.put("avRegistration/fields/code-field-directive/code-field-directive.html", '
'), + $templateCache.put("avRegistration/fields/code-field-directive/code-field-directive.html", '

'), $templateCache.put("avRegistration/fields/dni-field-directive/dni-field-directive.html", '

'), $templateCache.put("avRegistration/fields/email-field-directive/email-field-directive.html", '
'), $templateCache.put("avRegistration/fields/image-field-directive/image-field-directive.html", '

'), From 93010424b30d2166007fbcf00f5b91626a0e9e2b Mon Sep 17 00:00:00 2001 From: Findeton Date: Tue, 10 Oct 2017 19:38:10 -0500 Subject: [PATCH 20/23] refactor --- .../fields/code-field-directive/code-field-directive.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/avRegistration/fields/code-field-directive/code-field-directive.js b/avRegistration/fields/code-field-directive/code-field-directive.js index 0f2014dc..d914fde1 100644 --- a/avRegistration/fields/code-field-directive/code-field-directive.js +++ b/avRegistration/fields/code-field-directive/code-field-directive.js @@ -33,7 +33,7 @@ angular.module('avRegistration') var telInput = angular.element(document.getElementById('input' + scope.telIndex)); scope.isValidTel = telInput.intlTelInput("isValidNumber"); - scope.$watch('login_fields[' + scope.telIndex + '].value', + scope.$watch('telField.value', function (newValue, oldValue) { scope.isValidTel = telInput.intlTelInput("isValidNumber"); }, From a5d6e95e00e3700d1ae74cd79f7e74cfba2cebb7 Mon Sep 17 00:00:00 2001 From: Findeton Date: Tue, 10 Oct 2017 19:39:19 -0500 Subject: [PATCH 21/23] grunt build --- dist/appCommon-v103111.6.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/appCommon-v103111.6.js b/dist/appCommon-v103111.6.js index 2ca0766a..6cf3c395 100644 --- a/dist/appCommon-v103111.6.js +++ b/dist/appCommon-v103111.6.js @@ -478,7 +478,7 @@ angular.module("avRegistration").factory("Authmethod", [ "$http", "$cookies", "C return Plugins.hook("hide-user-send-auth-code", data), data.showUserSendAuthCode; }, "sms" === scope.method || "sms-otp" === scope.method) { var telInput = angular.element(document.getElementById("input" + scope.telIndex)); - scope.isValidTel = telInput.intlTelInput("isValidNumber"), scope.$watch("login_fields[" + scope.telIndex + "].value", function(newValue, oldValue) { + scope.isValidTel = telInput.intlTelInput("isValidNumber"), scope.$watch("telField.value", function(newValue, oldValue) { scope.isValidTel = telInput.intlTelInput("isValidNumber"); }, !0); } From 5e6cb6dc09efb871c8d990017c126016cefb56d5 Mon Sep 17 00:00:00 2001 From: Findeton Date: Thu, 19 Oct 2017 11:01:38 -0500 Subject: [PATCH 22/23] change version to go v7 --- Gruntfile.js | 22 +++++++++++----------- avConfig.js | 2 +- bower.json | 2 +- package.json | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 5e07fd01..41cad943 100755 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -19,7 +19,7 @@ 'use strict'; var pkg = require('./package.json'); -var AV_CONFIG_VERSION = '103111.6'; +var AV_CONFIG_VERSION = '103111.7'; //Using exclusion patterns slows down Grunt significantly //instead of creating a set of patterns like '**/*.js' and '!**/node_modules/**' @@ -195,10 +195,10 @@ module.exports = function (grunt) { options: { remove: ['script[data-remove!="false"]','link[data-remove!="false"]'], append: [ - {selector:'body',html:''}, + {selector:'body',html:''}, {selector:'body',html:''}, - {selector:'body',html:''}, - {selector:'body',html:''}, + {selector:'body',html:''}, + {selector:'body',html:''}, {selector:'head',html:''} ] }, @@ -228,9 +228,9 @@ module.exports = function (grunt) { 'temp/libnocompat.js': ['<%= dom_munger.data.libnocompatjs %>'], 'temp/lib.js': ['<%= dom_munger.data.libjs %>'], 'temp/app.js': ['<%= dom_munger.data.appjs %>','<%= ngtemplates.main.dest %>'], - 'dist/avConfig-v103111.6.js': ['avConfig.js'], - 'dist/avThemes-v103111.6.js': ['avThemes.js'], - 'dist/avPlugins-v103111.6.js': ['plugins/**/*.js'] + 'dist/avConfig-v103111.7.js': ['avConfig.js'], + 'dist/avThemes-v103111.7.js': ['avThemes.js'], + 'dist/avPlugins-v103111.7.js': ['plugins/**/*.js'] } } }, @@ -262,10 +262,10 @@ module.exports = function (grunt) { beautify: true }, files: { - 'dist/appCommon-v103111.6.js': 'temp/app.js', - 'dist/libCommon-v103111.6.js': 'temp/lib.js', - 'dist/libnocompat-v103111.6.js': 'temp/libnocompat.js', - 'dist/libcompat-v103111.6.js': 'temp/libcompat.js', + 'dist/appCommon-v103111.7.js': 'temp/app.js', + 'dist/libCommon-v103111.7.js': 'temp/lib.js', + 'dist/libnocompat-v103111.7.js': 'temp/libnocompat.js', + 'dist/libcompat-v103111.7.js': 'temp/libcompat.js', 'dist/avWidgets.js': 'avWidgets.js', "dist/locales/moment/es.js": "bower_components/moment/lang/es.js", diff --git a/avConfig.js b/avConfig.js index 09a025fa..872154b6 100644 --- a/avConfig.js +++ b/avConfig.js @@ -20,7 +20,7 @@ * in this same file, which you might want to edit and tune if needed. */ -var AV_CONFIG_VERSION = '103111.6'; +var AV_CONFIG_VERSION = '103111.7'; var avConfigData = { // the base url path for ajax requests, for example for sending ballots or diff --git a/bower.json b/bower.json index 13a61649..98e47140 100755 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "avCommon", - "version" : "103111.6", + "version" : "103111.7", "main": "index.html", "ignore": [ "tests", diff --git a/package.json b/package.json index cc2253f8..a8d13bcf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "agora-gui-common", - "version" : "103111.6.0", + "version" : "103111.7.0", "devDependencies": { "grunt": "~0.4", "grunt-angular-templates": "~0.5", From aeef47f078c37db1d6b11a7ed4263da232155715 Mon Sep 17 00:00:00 2001 From: Findeton Date: Thu, 19 Oct 2017 11:02:31 -0500 Subject: [PATCH 23/23] grunt build --- dist/{appCommon-v103111.6.js => appCommon-v103111.7.js} | 0 dist/{avConfig-v103111.6.js => avConfig-v103111.7.js} | 2 +- dist/{avPlugins-v103111.6.js => avPlugins-v103111.7.js} | 0 dist/{avThemes-v103111.6.js => avThemes-v103111.7.js} | 0 dist/index.html | 2 +- dist/{libCommon-v103111.6.js => libCommon-v103111.7.js} | 0 dist/{libcompat-v103111.6.js => libcompat-v103111.7.js} | 0 dist/{libnocompat-v103111.6.js => libnocompat-v103111.7.js} | 0 8 files changed, 2 insertions(+), 2 deletions(-) rename dist/{appCommon-v103111.6.js => appCommon-v103111.7.js} (100%) rename dist/{avConfig-v103111.6.js => avConfig-v103111.7.js} (99%) rename dist/{avPlugins-v103111.6.js => avPlugins-v103111.7.js} (100%) rename dist/{avThemes-v103111.6.js => avThemes-v103111.7.js} (100%) rename dist/{libCommon-v103111.6.js => libCommon-v103111.7.js} (100%) rename dist/{libcompat-v103111.6.js => libcompat-v103111.7.js} (100%) rename dist/{libnocompat-v103111.6.js => libnocompat-v103111.7.js} (100%) diff --git a/dist/appCommon-v103111.6.js b/dist/appCommon-v103111.7.js similarity index 100% rename from dist/appCommon-v103111.6.js rename to dist/appCommon-v103111.7.js diff --git a/dist/avConfig-v103111.6.js b/dist/avConfig-v103111.7.js similarity index 99% rename from dist/avConfig-v103111.6.js rename to dist/avConfig-v103111.7.js index 09a025fa..872154b6 100644 --- a/dist/avConfig-v103111.6.js +++ b/dist/avConfig-v103111.7.js @@ -20,7 +20,7 @@ * in this same file, which you might want to edit and tune if needed. */ -var AV_CONFIG_VERSION = '103111.6'; +var AV_CONFIG_VERSION = '103111.7'; var avConfigData = { // the base url path for ajax requests, for example for sending ballots or diff --git a/dist/avPlugins-v103111.6.js b/dist/avPlugins-v103111.7.js similarity index 100% rename from dist/avPlugins-v103111.6.js rename to dist/avPlugins-v103111.7.js diff --git a/dist/avThemes-v103111.6.js b/dist/avThemes-v103111.7.js similarity index 100% rename from dist/avThemes-v103111.6.js rename to dist/avThemes-v103111.7.js diff --git a/dist/index.html b/dist/index.html index 6597d45f..260968fe 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1,2 +1,2 @@ Agora Voting
Page is taking some time to load, wait a moment please. If it takes too long, please check that you have javascript activated, try with another browser or contact us.
For security reasons, your browser is unsupported. Please use a newer web browser (if you are using Internet Explorer, use version 9 or newer).
\ No newline at end of file + so in the compiled app e2e tests are not expected work. -->
Page is taking some time to load, wait a moment please. If it takes too long, please check that you have javascript activated, try with another browser or contact us.
For security reasons, your browser is unsupported. Please use a newer web browser (if you are using Internet Explorer, use version 9 or newer).
\ No newline at end of file diff --git a/dist/libCommon-v103111.6.js b/dist/libCommon-v103111.7.js similarity index 100% rename from dist/libCommon-v103111.6.js rename to dist/libCommon-v103111.7.js diff --git a/dist/libcompat-v103111.6.js b/dist/libcompat-v103111.7.js similarity index 100% rename from dist/libcompat-v103111.6.js rename to dist/libcompat-v103111.7.js diff --git a/dist/libnocompat-v103111.6.js b/dist/libnocompat-v103111.7.js similarity index 100% rename from dist/libnocompat-v103111.6.js rename to dist/libnocompat-v103111.7.js