diff --git a/dictation_server/src/common/validators/authorId.validator.ts b/dictation_server/src/common/validators/authorId.validator.ts index 02ad278..23afafb 100644 --- a/dictation_server/src/common/validators/authorId.validator.ts +++ b/dictation_server/src/common/validators/authorId.validator.ts @@ -5,11 +5,26 @@ import { ValidationOptions, registerDecorator, } from 'class-validator'; +import { + PostUpdateUserRequest, + SignupRequest, +} from '../../features/users/types/types'; +import { USER_ROLES } from '../../constants'; // 大文字英数字とアンダースコアのみを許可するバリデータ @ValidatorConstraint({ name: 'IsAuthorId', async: false }) export class IsAuthorId implements ValidatorConstraintInterface { validate(value: any, args: ValidationArguments) { + const request = args.object as SignupRequest | PostUpdateUserRequest; + // requestの存在チェック + if (!request) { + return false; + } + const { role } = request; + // roleがauthor以外の場合はスキップする + if (role !== USER_ROLES.AUTHOR) { + return true; + } return /^[A-Z0-9_]*$/.test(value); } defaultMessage(args: ValidationArguments) {