mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-04-27 07:48:01 -07:00
39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
import { ForgotPasswordResetParams } from 'store';
|
|
import { StatusEnum, WebSocketConnectOptions } from 'types';
|
|
|
|
import webClient from '../../WebClient';
|
|
import { SessionPersistence } from '../../persistence';
|
|
import { hashPassword } from '../../utils';
|
|
|
|
import { disconnect, updateStatus } from '.';
|
|
|
|
export function forgotPasswordReset(options: WebSocketConnectOptions, passwordSalt?: string): void {
|
|
const { userName, token, newPassword } = options as unknown as ForgotPasswordResetParams;
|
|
|
|
const forgotPasswordResetConfig: any = {
|
|
...webClient.clientConfig,
|
|
userName,
|
|
token,
|
|
};
|
|
|
|
if (passwordSalt) {
|
|
forgotPasswordResetConfig.hashedNewPassword = hashPassword(passwordSalt, newPassword);
|
|
} else {
|
|
forgotPasswordResetConfig.newPassword = newPassword;
|
|
}
|
|
|
|
const command = webClient.protobuf.controller.Command_ForgotPasswordReset.create(forgotPasswordResetConfig);
|
|
const sc = webClient.protobuf.controller.SessionCommand.create({ '.Command_ForgotPasswordReset.ext': command });
|
|
|
|
webClient.protobuf.sendSessionCommand(sc, raw => {
|
|
if (raw.responseCode === webClient.protobuf.controller.Response.ResponseCode.RespOk) {
|
|
updateStatus(StatusEnum.DISCONNECTED, null);
|
|
SessionPersistence.resetPasswordSuccess();
|
|
} else {
|
|
updateStatus(StatusEnum.DISCONNECTED, null);
|
|
SessionPersistence.resetPasswordFailed();
|
|
}
|
|
|
|
disconnect();
|
|
});
|
|
}
|