@nevis-security/nevis-mobile-authentication-sdk-react
Version:
React Native plugin for Nevis Mobile Authentication SDK. Supports only mobile.
69 lines (60 loc) • 2.34 kB
text/typescript
/**
* Copyright © 2024 Nevis Security AG. All rights reserved.
*/
import { PasswordAuthenticatorProtectionStatus } from './PasswordAuthenticatorProtectionStatus';
import type { PasswordChangeRecoverableError } from '../../error/password/change/PasswordChangeRecoverableError';
import { PasswordChangeRecoverableErrorConverter } from '../../error/password/change/PasswordChangeRecoverableErrorConverter';
/**
* The object providing some contextual information during password change.
*
* @see {@link PasswordChanger.changePassword}
*/
export abstract class PasswordChangeContext {
/**
* The username whose password must be changed.
*/
abstract username: string;
/**
* The object describing the password protection status (whether is locked, in
* cool-down mode, etc.).
*/
abstract authenticatorProtectionStatus: PasswordAuthenticatorProtectionStatus;
/**
* The object describing the latest recoverable error (if any).
*/
abstract lastRecoverableError?: PasswordChangeRecoverableError;
/**
* Alternate constructor that creates a {@link PasswordChangeContext} from a json.
*
* @param json contains the source for instance creation.
* @returns the created {@link PasswordChangeContext} instance.
*/
static fromJson(json: any): PasswordChangeContext {
return PasswordChangeContextImpl.fromJson(json);
}
}
export class PasswordChangeContextImpl extends PasswordChangeContext {
authenticatorProtectionStatus: PasswordAuthenticatorProtectionStatus;
lastRecoverableError?: PasswordChangeRecoverableError;
username: string;
private constructor(
username: string,
authenticatorProtectionStatus: PasswordAuthenticatorProtectionStatus,
lastRecoverableError?: PasswordChangeRecoverableError
) {
super();
this.username = username;
this.authenticatorProtectionStatus = authenticatorProtectionStatus;
this.lastRecoverableError = lastRecoverableError;
}
static fromJson(json: any): PasswordChangeContextImpl {
const username = json.username;
const status = PasswordAuthenticatorProtectionStatus.fromJson(
json.authenticatorProtectionStatus
);
const lastRecoverableError =
json.lastRecoverableError &&
new PasswordChangeRecoverableErrorConverter(json.lastRecoverableError).convert();
return new PasswordChangeContextImpl(username, status, lastRecoverableError);
}
}