Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/change_root_password/index.cmb.js

/*
 * changePasswordService.js                           Copyright 2022 cPanel, L.L.C.
 *                                                           All rights reserved.
 * copyright@cpanel.net                                         http://cpanel.net
 * This code is subject to the cPanel license. Unauthorized copying is prohibited
 */

/* global define: false */
define(
    'app/services/changePasswordService',[
        "angular",
        "cjt/io/api",
        "cjt/io/whm-v1-request",
        "cjt/io/whm-v1",
        "cjt/services/APIService"
    ],
    function(angular, API, APIREQUEST) {

        // Get the current application
        var app = angular.module("whm.changeRootPassword");

        app.factory("changePasswordService", ["$q", "APIService", function($q, APIService) {
            var ChangePasswordService = function() {};
            ChangePasswordService.prototype = new APIService();

            angular.extend(ChangePasswordService.prototype, {

                /**
                 * Calls WHM API to request passsword change on the supplied username and password.
                 *
                 * @method requestPasswordChange
                 * @param {String} user      The WHM username on which to update the password.
                 * @param {String} password  The new password for the WHM user to update.
                 *
                 * @return {Promise}         Object that return success or failure results.
                 */
                requestPasswordChange: function(user, password) {
                    var apiCall = new APIREQUEST.Class();
                    apiCall.initialize("", "passwd");
                    apiCall.addArgument("user", user);
                    apiCall.addArgument("password", password);

                    return this.deferred(apiCall).promise
                        .then(function(response) {
                            return response;
                        })
                        .catch(function(error) {
                            return $q.reject(error);
                        });
                }
            });
            return new ChangePasswordService();
        }]);
    }
);

/*
 * index.js                                           Copyright 2022 cPanel, L.L.C.
 *                                                           All rights reserved.
 * copyright@cpanel.net                                         http://cpanel.net
 * This code is subject to the cPanel license. Unauthorized copying is prohibited
 */

/* global require: false, define: false, PAGE: false */

define(
    'app/index',[
        "angular",
        "cjt/util/locale",
        "cjt/modules",
        "ngAnimate",
        "ngSanitize"
    ],
    function(angular, LOCALE) {
        "use strict";

        return function() {
            angular.module("whm.changeRootPassword", [
                "cjt2.whm",
                "cjt2.config.whm.configProvider",
                "ngAnimate",
                "ngSanitize",
                "angular-growl"
            ]);

            var app = require(
                [
                    "cjt/bootstrap",
                    "cjt/directives/validateEqualsDirective",
                    "cjt/directives/passwordFieldDirective",
                    "cjt/directives/toggleLabelInfoDirective",
                    "cjt/directives/actionButtonDirective",
                    "cjt/directives/validationContainerDirective",
                    "cjt/directives/validationItemDirective",
                    "app/services/changePasswordService"
                ], function(BOOTSTRAP) {

                    var DEFAULT_PASSWORD_STRENGTH = 10;
                    var app = angular.module("whm.changeRootPassword");

                    app.controller("changeRootPasswordController", [
                        "$scope",
                        "changePasswordService",
                        "growl",
                        function(
                            $scope,
                            changePasswordService,
                            growl
                        ) {

                            // To prevent browsers from auto filling the password. autocomplete="off" not working on all browsers
                            // https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion
                            $scope.password = "";

                            // Bring in the globally set required password strength setting, or default to this app's internal password strength requirements.
                            $scope.minimumPasswordStrength = angular.isDefined(PAGE.MINIMUM_PASSWORD_STRENGTH) ? parseInt(PAGE.MINIMUM_PASSWORD_STRENGTH, 10) : DEFAULT_PASSWORD_STRENGTH;

                            /**
                            * Calls changePasswordService on view button click to request passsword change on the preset "root" user and password.
                            *
                            * @method submitChangeRootPassword
                            *
                            */
                            $scope.submitChangeRootPassword = function() {
                                return changePasswordService.requestPasswordChange("root", $scope.password)
                                    .then(function(result) {

                                    // show success
                                        growl.success(LOCALE.maketext("The system successfully updated the [asis,root] password. The following service passwords changed: [list_and,_1]", result.data));
                                        resetAllFields();
                                    }, function(error) {

                                    // show failure
                                        growl.error(error);
                                        resetAllFields();
                                    });

                            };

                            /**
                            * Resets all input form fields and clears any validator messages after receiving API results.
                            *
                            * @method resetAllFields
                            *
                            */
                            function resetAllFields() {
                                $scope.password = $scope.confirmPassword = "";
                                if ($scope.changeRootPasswordForm) {
                                    $scope.changeRootPasswordForm.$setPristine();
                                }
                            }
                        }
                    ]);

                    BOOTSTRAP(document, "whm.changeRootPassword");
                });
            return app;
        };
    }
);

Back to Directory File Manager