142 lines
3.8 KiB
JavaScript
142 lines
3.8 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* @ngdoc service
|
|
* @name yololiumApp.LdsAccount
|
|
* @description
|
|
* # LdsAccount
|
|
* Service in the yololiumApp.
|
|
*/
|
|
angular.module('yololiumApp')
|
|
.service('LdsAccount', [
|
|
'$q'
|
|
, '$http'
|
|
, '$modal'
|
|
, 'DaplieApiConfig'
|
|
, 'DaplieApiRequest'
|
|
, function LdsAccount($q, $http, $modal, DaplieApiConfig, DaplieApiRequest) {
|
|
// AngularJS will instantiate a singleton by calling "new" on this function
|
|
|
|
var me = this;
|
|
|
|
/*
|
|
function getWardClerkInfo(session, opts) {
|
|
// TODO check to see if this user is in the system
|
|
// if so, present them with the information to get
|
|
// their record number from the ward clerk
|
|
return $http.get(StApi.apiPrefix + '/ldsconnectv2/request-mrn/:emailOrPhone')q.when();
|
|
}
|
|
*/
|
|
|
|
me.showVerificationModal = function (account, opts) {
|
|
return $modal.open({
|
|
templateUrl: '/views/verify-contact-details.html'
|
|
, controller: 'VerifyContactDetailsController as VCDC'
|
|
, backdrop: 'static'
|
|
, keyboard: false
|
|
, resolve: {
|
|
myLdsAccount: function () {
|
|
return me;
|
|
}
|
|
, ldsAccountObject: function () {
|
|
return account;
|
|
}
|
|
, ldsAccountOptions: function () {
|
|
return opts;
|
|
}
|
|
}
|
|
}).result;
|
|
};
|
|
|
|
me.showAccountModal = function (session, profile, opts) {
|
|
return DaplieApiRequest.profile(session).then(function () {
|
|
return $modal.open({
|
|
templateUrl: '/views/lds-account.html'
|
|
, controller: 'LdsAccountController as LAC'
|
|
, backdrop: 'static'
|
|
, keyboard: false
|
|
, resolve: {
|
|
realLdsAccount: function () {
|
|
return me;
|
|
}
|
|
, mySession: function () {
|
|
return session;
|
|
}
|
|
, myProfile: function () {
|
|
return profile;
|
|
}
|
|
, myOptions: function () {
|
|
return opts;
|
|
}
|
|
}
|
|
}).result;
|
|
});
|
|
};
|
|
|
|
me.verifyAccount = function (account, profile, opts) {
|
|
var recheckTime = (3 * 30 * 24 * 60 * 60 * 1000);
|
|
|
|
var fresh;
|
|
|
|
// TODO ISO timestamps
|
|
fresh = Date.now() - (new Date(account.userVerifiedAt).valueOf()) < recheckTime;
|
|
if (fresh) {
|
|
return $q.when(account);
|
|
}
|
|
|
|
//opts.ldsStaleLoginInfo = login;
|
|
//return true;
|
|
// ask the user to re-verify their info
|
|
return me.showAccountModal(account, profile, opts).then(function () {
|
|
return me.verifyAccount(account, profile, opts);
|
|
});
|
|
};
|
|
|
|
me.getCode = function (account, type, node) {
|
|
return $http.post(DaplieApiConfig.providerUri + '/api/ldsio/' + account.id + '/verify/code', {
|
|
type: type
|
|
, node: node
|
|
}).then(function (result) {
|
|
if (result.data.error) {
|
|
return $q.reject(result.data.error);
|
|
}
|
|
return result.data;
|
|
});
|
|
};
|
|
|
|
me.validateCode = function (account, type, node, uuid, code) {
|
|
return $http.post(DaplieApiConfig.providerUri + '/api/ldsio/' + account.id + '/verify/code/validate', {
|
|
type: type
|
|
, node: node
|
|
, uuid: uuid
|
|
, code: code
|
|
}).then(function (result) {
|
|
if (result.data.error) {
|
|
return $q.reject(result.data.error);
|
|
}
|
|
|
|
return result.data;
|
|
});
|
|
};
|
|
|
|
me.isFresh = function (iso) {
|
|
var now = Date.now();
|
|
var date = new Date(iso).valueOf();
|
|
// 3 months - 3 days
|
|
var staleTime = (3 * 30 * 24 * 60 * 60 * 1000) - (3 * 24 * 60 * 60 * 1000);
|
|
var fresh = date && (now - date < staleTime);
|
|
|
|
return fresh;
|
|
};
|
|
|
|
me.ensureVerified = function (account, opts) {
|
|
if (me.isFresh(account.emailVerifiedAt) && me.isFresh(account.phoneVerifiedAt)) {
|
|
return $q.when();
|
|
}
|
|
|
|
return me.showVerificationModal(account, opts);
|
|
};
|
|
|
|
return me;
|
|
}]);
|