|string> */ public function rules(): array { $rules = [ 'ids' => ['required', 'array', 'min:1', new ExcludeCurrentUser], 'ids.*' => ['required', 'uuid', Rule::exists(User::class, 'uuid')], 'status' => ['required', 'string', Rule::in(UserStatus::values())], ]; // 모듈/플러그인이 validation rules를 동적으로 추가할 수 있도록 훅 제공 return HookManager::applyFilters('core.user.bulk_update_status_validation_rules', $rules, $this); } /** * 검증 오류 메시지를 정의합니다. * * @return array */ public function messages(): array { return [ 'ids.required' => __('validation.required', ['attribute' => __('validation.attributes.user_ids')]), 'ids.array' => __('validation.array', ['attribute' => __('validation.attributes.user_ids')]), 'ids.min' => __('validation.min.array', ['attribute' => __('validation.attributes.user_ids'), 'min' => 1]), 'ids.*.required' => __('validation.required', ['attribute' => __('validation.attributes.user_id')]), 'ids.*.uuid' => __('validation.uuid', ['attribute' => __('validation.attributes.user_id')]), 'ids.*.exists' => __('validation.exists', ['attribute' => __('validation.attributes.user_id')]), 'status.required' => __('validation.required', ['attribute' => __('validation.attributes.status')]), 'status.in' => __('validation.in', ['attribute' => __('validation.attributes.status')]), ]; } /** * 검증 속성명을 반환합니다. * * 범용 필드명 ids 는 전역 라벨이 범용 문구이므로, * 사용자 대상 라벨을 이 요청에서만 명시 매핑합니다. * * @return array */ public function attributes(): array { return [ 'ids' => __('validation.attributes.user_ids'), 'ids.*' => __('validation.attributes.user_id'), ]; } }