검증 규칙 */ public function rules(): array { $rules = [ 'challenge_id' => ['required', 'string', 'uuid'], // 코드 자리수는 프로바이더 설정에 따라 달라지므로 상·하한만 느슨하게 두고 // 정확한 일치 판정은 프로바이더가 수행한다. 'code' => ['required', 'string', 'min:4', 'max:16'], ]; // 확장이 자체 2단계 수단(앱 OTP·SMS 등)을 붙일 때 입력 필드를 추가할 수 있도록 개방한다 return HookManager::applyFilters('core.auth.two_factor_validation_rules', $rules, $this); } /** * 검증 실패 메시지를 반환합니다. * * @return array 검증 메시지 */ public function messages(): array { return [ 'challenge_id.required' => __('validation.auth.two_factor.challenge_required'), 'challenge_id.uuid' => __('validation.auth.two_factor.challenge_invalid'), 'code.required' => __('validation.auth.two_factor.code_required'), ]; } }