@nevis-security/nevis-mobile-authentication-sdk-react
Version:
React Native plugin for Nevis Mobile Authentication SDK. Supports only mobile.
118 lines • 5.15 kB
TypeScript
/**
* Copyright © 2023-2024 Nevis Security AG. All rights reserved.
*/
import type { PinChangeRecoverableCustomValidationError } from '../../error/pin/change/PinChangeRecoverableCustomValidationError';
import { PinEnrollmentCustomValidationError } from '../../error/pin/enrollment/PinEnrollmentCustomValidationError';
/**
* The object defining the minimum and maximum length of the PIN.
*/
export declare abstract class PinPolicy {
/**
* The minimum length of the PIN.
*/
abstract minLength: number;
/**
* The maximum length of the PIN.
*/
abstract maxLength: number;
/**
* Default constructor for {@link PinPolicy}.
*
* @param minLength the minimum length of the PIN.
* @param maxLength the maximum length of the PIN.
* @returns an {@link PinPolicy} instance.
*/
static create(minLength: number, maxLength: number): PinPolicy;
/**
* Performs validation other than the minimum and maximum PIN length during PIN
* enrollment.
*
* This must be implemented in the case you require additional criteria for a
* PIN to be valid: the PIN must contain a minimum number of distinct digits,
* sequences of consecutive digits are disallowed, etc.
*
* If this method is not implemented, only the PIN minimum and maximum length
* will be validated during PIN enrollment.
*
* If validation fails, the implementation must invoke the provided `onError`
* with the error. The error will be the one returned by the
* {@link PinEnrollmentContext.lastRecoverableError} property.
*
* The implementation must guarantee that, one (and only one) of `onSuccess`
* and `onError` is invoked, and that the one invoked is invoked only once.
*
* Synchronous implementation example that requires PIN to have at least 4
* different digits:
* ```ts
* validatePinForEnrollment(
* _pin: string,
* onSuccess: () => void,
* _onError: (error: PinEnrollmentCustomValidationError) => void
* ): void {
* if(hasLessThan4DifferentDigits(pin)) {
* const error = new PinEnrollmentCustomValidationError(
* "The PIN has less than 4 consecutive digits."
* );
* onError(error);
* } else {
* onSuccess();
* }
* }
* ```
*
* @param pin the PIN to be validated.
* @param onSuccess the callback to invoke if the validation is successful.
* @param onError the callback to invoke with error if the validation fails.
*/
abstract validatePinForEnrollment(pin: string, onSuccess: () => void, onError: (error: PinEnrollmentCustomValidationError) => void): void;
/**
* Performs validation other than the minimum and maximum PIN length during PIN
* change.
*
* This must be implemented in the case you require additional criteria for a
* PIN to be valid: the PIN must contain a minimum number of distinct digits,
* sequences of consecutive digits are disallowed, etc.
*
* If this method is not implemented, only the PIN minimum and maximum length
* will be validated during PIN enrollment.
*
* If validation fails, the implementation must invoke the provided `onError`
* with the error. The error will be the one returned by the
* {@link PinEnrollmentContext.lastRecoverableError} property.
*
* The implementation must guarantee that, one (and only one) of `onSuccess`
* and `onError` is invoked, and that the one invoked is invoked only once.
*
* Synchronous implementation example that requires the PIN to be the same as
* a confirmation PIN provided in another field:
* ```ts
* validatePinForPinChange(
* _pin: string,
* onSuccess: () => void,
* _onError: (error: PinChangeRecoverableCustomValidationError) => void
* ): void {
* if(isDifferentThanConfirmationPIN(pin)) {
* const error = new PinChangeRecoverableCustomValidationError(
* "The provided PINs do not match."
* );
* onError(error);
* } else {
* onSuccess();
* }
* }
* ```
*
* @param pin the PIN to be validated.
* @param onSuccess the callback to invoke if the validation is successful.
* @param onError the callback to invoke with error if the validation fails.
*/
abstract validatePinForPinChange(pin: string, onSuccess: () => void, onError: (error: PinChangeRecoverableCustomValidationError) => void): void;
}
export declare class PinPolicyImpl extends PinPolicy {
minLength: number;
maxLength: number;
constructor(minLength: number, maxLength: number);
validatePinForEnrollment(_pin: string, onSuccess: () => void, _onError: (error: PinEnrollmentCustomValidationError) => void): void;
validatePinForPinChange(_pin: string, onSuccess: () => void, _onError: (error: PinChangeRecoverableCustomValidationError) => void): void;
}
//# sourceMappingURL=PinPolicy.d.ts.map