add password validator

This commit is contained in:
faris Aljohari
2024-07-15 16:28:49 +03:00
parent 439778fa23
commit 181aaf6c1c

View File

@ -0,0 +1,33 @@
import {
registerDecorator,
ValidationOptions,
ValidatorConstraint,
ValidatorConstraintInterface,
} from 'class-validator';
@ValidatorConstraint({ async: false })
export class IsPasswordStrongConstraint
implements ValidatorConstraintInterface
{
validate(password: string) {
const regex =
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
return regex.test(password);
}
defaultMessage() {
return 'password must be at least 8 characters long and include at least one uppercase letter, one lowercase letter, one numeric digit, and one special character.';
}
}
export function IsPasswordStrong(validationOptions?: ValidationOptions) {
return function (object: Record<string, any>, propertyName: string) {
registerDecorator({
target: object.constructor,
propertyName: propertyName,
options: validationOptions,
constraints: [],
validator: IsPasswordStrongConstraint,
});
};
}