Cockatrice/webclient/src/websocket/commands/session/requestPasswordSalt.ts
Jeremy Letto 8cc65b8967
Some checks failed
Build Desktop / Configure (push) Has been cancelled
Build Docker Image / amd64 & arm64 (push) Has been cancelled
Build Web / React (Node 16) (push) Has been cancelled
Build Web / React (Node lts/*) (push) Has been cancelled
Build Desktop / Debian 11 (push) Has been cancelled
Build Desktop / Debian 13 (push) Has been cancelled
Build Desktop / Debian 12 (push) Has been cancelled
Build Desktop / Fedora 43 (push) Has been cancelled
Build Desktop / Fedora 42 (push) Has been cancelled
Build Desktop / Servatrice_Debian 11 (push) Has been cancelled
Build Desktop / Ubuntu 24.04 (push) Has been cancelled
Build Desktop / Ubuntu 26.04 (push) Has been cancelled
Build Desktop / Ubuntu 22.04 (push) Has been cancelled
Build Desktop / Arch (push) Has been cancelled
Build Desktop / macOS 14 (push) Has been cancelled
Build Desktop / macOS 15 (push) Has been cancelled
Build Desktop / macOS 13 Intel (push) Has been cancelled
Build Desktop / macOS 15 Debug (push) Has been cancelled
Build Desktop / Windows 10 (push) Has been cancelled
Initial implementation completion and refactor (#6806)
2026-04-11 23:51:10 -04:00

64 lines
1.9 KiB
TypeScript

import { RequestPasswordSaltParams } from 'store';
import { StatusEnum, WebSocketConnectOptions, WebSocketConnectReason } from 'types';
import webClient from '../../WebClient';
import { BackendService } from '../../services/BackendService';
import { ProtoController } from '../../services/ProtoController';
import { SessionPersistence } from '../../persistence';
import {
activate,
disconnect,
login,
forgotPasswordReset,
updateStatus
} from './';
export function requestPasswordSalt(options: WebSocketConnectOptions): void {
const { userName } = options as RequestPasswordSaltParams;
const onFailure = () => {
switch (options.reason) {
case WebSocketConnectReason.ACTIVATE_ACCOUNT:
SessionPersistence.accountActivationFailed();
break;
case WebSocketConnectReason.PASSWORD_RESET:
SessionPersistence.resetPasswordFailed();
break;
default:
SessionPersistence.loginFailed();
}
disconnect();
};
BackendService.sendSessionCommand('Command_RequestPasswordSalt', {
...webClient.clientConfig,
userName,
}, {
responseName: 'Response_PasswordSalt',
onSuccess: (resp) => {
const passwordSalt = resp?.passwordSalt;
switch (options.reason) {
case WebSocketConnectReason.ACTIVATE_ACCOUNT:
activate(options, passwordSalt);
break;
case WebSocketConnectReason.PASSWORD_RESET:
forgotPasswordReset(options, passwordSalt);
break;
default:
login(options, passwordSalt);
}
},
onResponseCode: {
[ProtoController.root.Response.ResponseCode.RespRegistrationRequired]: () => {
updateStatus(StatusEnum.DISCONNECTED, 'Login failed: registration required');
onFailure();
},
},
onError: () => {
updateStatus(StatusEnum.DISCONNECTED, 'Login failed: Unknown Reason');
onFailure();
},
});
}