Files
threshold-ui/ui/admin/app/controllers/account/change-password.js
T
2024-05-31 11:29:24 -07:00

50 lines
1.4 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import Controller from '@ember/controller';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
import { notifySuccess, notifyError } from 'core/decorators/notify';
export default class AccountChangePasswordController extends Controller {
// =services
@service session;
@service router;
// =actions
/**
* Changes the password on the account and then redirects to the index route.
* @param {AccountModel} account
* @param {string} currentPassword
* @param {string} newPassword
*/
@action
@notifyError(({ message }) => message, { catch: true })
@notifySuccess('notifications.save-success')
async changePassword(account, currentPassword, newPassword) {
await account.changePassword(currentPassword, newPassword);
// Transition to index after success. We ignore errors in the transition,
// since the index route is responsible for additional
// redirects depending on the authentication context. These additional
// redirects may abort this initial transition, resulting in a
// TransitionAborted error, which we do not want to show to the user.
try {
await this.router.replaceWith('index');
} catch (e) {
// no-op
}
}
/**
* On cancel, redirects to index route for further processing.
*/
@action
cancel() {
this.router.replaceWith('index');
}
}