1*4148f2eeSYoshie Muranaka/** 2*4148f2eeSYoshie Muranaka * Controller for the profile settings page 3*4148f2eeSYoshie Muranaka * 4*4148f2eeSYoshie Muranaka * @module app/profile-settings/controllers/index 5*4148f2eeSYoshie Muranaka * @exports ProfileSettingsController 6*4148f2eeSYoshie Muranaka * @name ProfileSettingsController 7*4148f2eeSYoshie Muranaka */ 8*4148f2eeSYoshie Muranaka 9*4148f2eeSYoshie Muranakawindow.angular && (function(angular) { 10*4148f2eeSYoshie Muranaka 'use strict'; 11*4148f2eeSYoshie Muranaka 12*4148f2eeSYoshie Muranaka angular.module('app.profileSettings') 13*4148f2eeSYoshie Muranaka .controller('profileSettingsController', [ 14*4148f2eeSYoshie Muranaka '$scope', 'APIUtils', 'dataService', 'toastService', 15*4148f2eeSYoshie Muranaka function($scope, APIUtils, dataService, toastService) { 16*4148f2eeSYoshie Muranaka $scope.username; 17*4148f2eeSYoshie Muranaka $scope.minPasswordLength; 18*4148f2eeSYoshie Muranaka $scope.maxPasswordLength; 19*4148f2eeSYoshie Muranaka $scope.password; 20*4148f2eeSYoshie Muranaka $scope.passwordConfirm; 21*4148f2eeSYoshie Muranaka 22*4148f2eeSYoshie Muranaka /** 23*4148f2eeSYoshie Muranaka * Make API call to update user password 24*4148f2eeSYoshie Muranaka * @param {string} password 25*4148f2eeSYoshie Muranaka */ 26*4148f2eeSYoshie Muranaka const updatePassword = function(password) { 27*4148f2eeSYoshie Muranaka $scope.loading = true; 28*4148f2eeSYoshie Muranaka APIUtils.updateUser($scope.username, null, password) 29*4148f2eeSYoshie Muranaka .then( 30*4148f2eeSYoshie Muranaka () => toastService.success( 31*4148f2eeSYoshie Muranaka 'Password has been updated successfully.')) 32*4148f2eeSYoshie Muranaka .catch((error) => { 33*4148f2eeSYoshie Muranaka console.log(JSON.stringify(error)); 34*4148f2eeSYoshie Muranaka toastService.error('Unable to update password.') 35*4148f2eeSYoshie Muranaka }) 36*4148f2eeSYoshie Muranaka .finally(() => { 37*4148f2eeSYoshie Muranaka $scope.password = ''; 38*4148f2eeSYoshie Muranaka $scope.passwordConfirm = ''; 39*4148f2eeSYoshie Muranaka $scope.form.$setPristine(); 40*4148f2eeSYoshie Muranaka $scope.form.$setUntouched(); 41*4148f2eeSYoshie Muranaka $scope.loading = false; 42*4148f2eeSYoshie Muranaka }) 43*4148f2eeSYoshie Muranaka }; 44*4148f2eeSYoshie Muranaka 45*4148f2eeSYoshie Muranaka /** 46*4148f2eeSYoshie Muranaka * API call to get account settings for min/max 47*4148f2eeSYoshie Muranaka * password length requirement 48*4148f2eeSYoshie Muranaka */ 49*4148f2eeSYoshie Muranaka const getAllUserAccountProperties = function() { 50*4148f2eeSYoshie Muranaka APIUtils.getAllUserAccountProperties().then((accountSettings) => { 51*4148f2eeSYoshie Muranaka $scope.minPasswordLength = accountSettings.MinPasswordLength; 52*4148f2eeSYoshie Muranaka $scope.maxPasswordLength = accountSettings.MaxPasswordLength; 53*4148f2eeSYoshie Muranaka }) 54*4148f2eeSYoshie Muranaka }; 55*4148f2eeSYoshie Muranaka 56*4148f2eeSYoshie Muranaka /** 57*4148f2eeSYoshie Muranaka * Callback after form submitted 58*4148f2eeSYoshie Muranaka */ 59*4148f2eeSYoshie Muranaka $scope.onSubmit = function(form) { 60*4148f2eeSYoshie Muranaka if (form.$valid) { 61*4148f2eeSYoshie Muranaka const password = form.password.$viewValue; 62*4148f2eeSYoshie Muranaka updatePassword(password); 63*4148f2eeSYoshie Muranaka } 64*4148f2eeSYoshie Muranaka }; 65*4148f2eeSYoshie Muranaka 66*4148f2eeSYoshie Muranaka /** 67*4148f2eeSYoshie Muranaka * Callback after view loaded 68*4148f2eeSYoshie Muranaka */ 69*4148f2eeSYoshie Muranaka $scope.$on('$viewContentLoaded', () => { 70*4148f2eeSYoshie Muranaka getAllUserAccountProperties(); 71*4148f2eeSYoshie Muranaka $scope.username = dataService.getUser(); 72*4148f2eeSYoshie Muranaka }); 73*4148f2eeSYoshie Muranaka } 74*4148f2eeSYoshie Muranaka ]); 75*4148f2eeSYoshie Muranaka})(angular); 76