47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import {
|
|
ValidationArguments,
|
|
ValidatorConstraintInterface,
|
|
ValidatorConstraint,
|
|
} from 'class-validator';
|
|
|
|
@ValidatorConstraint({ name: 'checkValidExtension', async: false })
|
|
export class ValidUrlExtension implements ValidatorConstraintInterface {
|
|
validate(text: string, args: ValidationArguments) {
|
|
return (
|
|
!!text?.split?.('?')?.[0].endsWith('.png') ||
|
|
!!text?.split?.('?')?.[0].endsWith('.jpg') ||
|
|
!!text?.split?.('?')?.[0].endsWith('.jpeg') ||
|
|
!!text?.split?.('?')?.[0].endsWith('.gif') ||
|
|
!!text?.split?.('?')?.[0].endsWith('.webp') ||
|
|
!!text?.split?.('?')?.[0].endsWith('.mp4')
|
|
);
|
|
}
|
|
|
|
defaultMessage(args: ValidationArguments) {
|
|
// here you can provide default error message if validation failed
|
|
return (
|
|
'File must have a valid extension: .png, .jpg, .jpeg, .gif, .webp, or .mp4'
|
|
);
|
|
}
|
|
}
|
|
|
|
@ValidatorConstraint({ name: 'checkValidPath', async: false })
|
|
export class ValidUrlPath implements ValidatorConstraintInterface {
|
|
validate(text: string, args: ValidationArguments) {
|
|
if (!process.env.RESTRICT_UPLOAD_DOMAINS) {
|
|
return true;
|
|
}
|
|
|
|
return (
|
|
(text || 'invalid url').indexOf(process.env.RESTRICT_UPLOAD_DOMAINS) > -1
|
|
);
|
|
}
|
|
|
|
defaultMessage(args: ValidationArguments) {
|
|
// here you can provide default error message if validation failed
|
|
return (
|
|
'URL must contain the domain: ' + process.env.RESTRICT_UPLOAD_DOMAINS
|
|
);
|
|
}
|
|
}
|