import template from './account.component.html'; /** * Account Component * * @namespace Components */ (function () { 'use strict'; angular.module('vfApp').component('vfAccount', { controller: AccountController, template, }); AccountController.$inject = ['$location', 'Alerts', 'User', 'Utils']; /** * @namespace AccountController * @param {Object} $location service * @param {Object} Alerts VendorFuel service * @param {Object} User VendorFuel service * @param {Object} Utils VendorFuel service * @memberof Components */ function AccountController($location, Alerts, User, Utils) { const vm = this; vm.$onInit = $onInit; vm.alertsList = Alerts.list; vm.formPatterns = { name: /^[a-zA-Z\u00C0-\u00FF ]{4,30}$/, password: /(?=.*[0-9])(?=.*[!@#$%^&*-])[a-zA-Z0-9!@#$%^&*]{8,}/, }; vm.getPasswordStrength = getPasswordStrength; vm.isSignedIn = User.isAuthed && User.email; vm.onClickSignOut = onClickSignOut; vm.onClickUpdate = onClickUpdate; /** * @name $onInit * @memberof Components.AccountController */ function $onInit() { vm.account = { name: User.name || null, email: User.email || null, company: User.company || null, }; vm.pageUrls = { addresses: Utils.getPageUrl('addresses'), login: Utils.getPageUrl('login', { redirect_to: $location.path(), }), register: Utils.getPageUrl('register'), }; } /** * @name getPasswordStrength * @param {string} password Password * @return {number} Value for usage in progress element. * @memberof Components.AccountController */ function getPasswordStrength(password) { const points = 20; const val = password.$viewValue; let strength = 0; if (val) { if (val.length > 0) { strength += points; } if (val.length >= 8) { strength += points; } if (val.match(/[A-Z]+/)) { strength += points; } if (val.match(/\d+/)) { strength += points; } if (val.match(/[!@#$%^&*-]+/)) { strength += points; } } return strength; } this.onClickChangePassword = () => { this.isShowingPasswordFields = true; jQuery('#collapsePassword').collapse('show'); }; /** * @name onClickSignOut * @memberof Components.AccountController */ function onClickSignOut() { vm.isSigningOut = true; User.logout().then(function () { window.location.href = '/'; }); } /** * @name onClickUpdate * @memberof Components.AccountController */ function onClickUpdate() { vm.isUpdating = true; const userData = { name: vm.account.name, email: vm.account.email, company: vm.account.company, password: vm.account.password, password_confirmation: vm.account.passwordConfirmation, }; User.updateInfo(userData) .then(function () { vm.isUpdating = false; }) .catch((reject) => { console.error(reject); }); } } })();