xref: /openbmc/phosphor-webui/app/profile-settings/controllers/profile-settings-controller.js (revision 4148f2eee6313068d3223871005160b2902abb18)
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