104 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| angular.module('yololiumApp')
 | |
|   .controller('VerifyContactDetailsController', [
 | |
|     '$scope'
 | |
|   , '$q'
 | |
|   , '$modalInstance'
 | |
|   , 'myLdsAccount'
 | |
|   , 'ldsAccountObject'
 | |
|   , 'ldsAccountOptions'
 | |
|   , function (
 | |
|     $scope
 | |
|   , $q
 | |
|   , $modalInstance
 | |
|   , myLdsAccount
 | |
|   , account
 | |
|     /*
 | |
|   , opts
 | |
|     */
 | |
|   ) {
 | |
|     var scope = this;
 | |
| 
 | |
|     scope.phone = account.phone;
 | |
|     scope.email = account.email;
 | |
| 
 | |
|     scope.codes = {};
 | |
|     scope.validationErrorMessages = {};
 | |
| 
 | |
|     scope.codes.phone = localStorage.getItem('phoneCode');
 | |
|     scope.codes.email = localStorage.getItem('emailCode');
 | |
| 
 | |
|     scope.sendCode = function (type, node) {
 | |
|       // TODO needs to get expire time (and store in localStorage)
 | |
|       myLdsAccount.getCode(account, type, node).then(function (data) {
 | |
|         scope.codes[type] = data.uuid;
 | |
|         localStorage.setItem(type + 'Code', data.uuid);
 | |
|       }, function (err) {
 | |
|         window.alert(err.message || 'unknown error');
 | |
|       });
 | |
|     };
 | |
| 
 | |
|     //scope.validateCode = function (type, node, uuid, code);
 | |
|     scope.validateCode = function (code) {
 | |
|       var type;
 | |
|       var node;
 | |
|       var uuid;
 | |
|       var rePhoneCode = /^\s*(\d{3})[-\s]*(\d{3})\s*$/;
 | |
|       var reEmailCode = /^\s*(\w+)[-\s]+(\w+)[-\s]+(\d+)\s*$/;
 | |
|       var m;
 | |
|       code = code.trim();
 | |
| 
 | |
|       if (rePhoneCode.test(code)) {
 | |
|         m = code.match(rePhoneCode);
 | |
|         type = 'phone';
 | |
|         node = account.phone;
 | |
|         uuid = scope.codes[type];
 | |
|         code = m[1] + '-' + m[2];
 | |
|       } else if (reEmailCode.test(code)) {
 | |
|         m = code.match(reEmailCode);
 | |
|         type = 'email';
 | |
|         node = account.email;
 | |
|         uuid = scope.codes[type];
 | |
|         code = m[1] + '-' + m[2] + '-' + m[3];
 | |
|       } else {
 | |
|         throw new Error("unexpected code type");
 | |
|       }
 | |
| 
 | |
|       function showError(err) {
 | |
|         console.error("[ERROR] in verify contact:");
 | |
|         console.log(err);
 | |
|         scope.validationErrorMessages[type] = err.message
 | |
|           || (type + ' code validation failed, Double check and try again')
 | |
|           ;
 | |
|       }
 | |
| 
 | |
|       return myLdsAccount.validateCode(account, type, node, uuid, code).then(function (data) {
 | |
|         if (data.error) {
 | |
|           scope.validationErrorMessages[type] = "Code didn't validate";
 | |
|           showError(data.error);
 | |
|           return;
 | |
|         }
 | |
| 
 | |
|         if (!data.validated) {
 | |
|           console.error("[ERROR] in verify contact validate:");
 | |
|           console.error(data);
 | |
|           scope.validationErrorMessages[type] = "Code didn't validate";
 | |
|           showError({ message: "Code didn't validate" });
 | |
|           return;
 | |
|         }
 | |
| 
 | |
|         scope.validationErrorMessages[type] = '';
 | |
|         localStorage.removeItem(type + 'Code');
 | |
| 
 | |
|         scope[type + 'Verified'] = true;
 | |
|         account[type + 'VerifiedAt'] = new Date().toISOString();
 | |
|       }, showError);
 | |
|     };
 | |
| 
 | |
|     scope.verifyAccount = function () {
 | |
|       // TODO refresh session StSession.get({ expire: true })
 | |
|       $modalInstance.close();
 | |
|     };
 | |
|   }]);
 |