/
itp_practice
/
itp_backend
Обзор
Документация
Войти
/
itp_practice
/
itp_backend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
app/Http/Requests/UpdateEmailRequest.php
84 строки
2 KB
vivanenko
profile edit
29 май 2025, 19:57
29 май 2025, 19:57
2ec716b
Код
Авторство
О чём код?
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Support\Facades\Auth; /** * Update Email Form Request * * Validates email update requests following SOLID principles: * - Single Responsibility: Only validates email update data * - Open/Closed: Rules can be extended without modification */ class UpdateEmailRequest extends FormRequest { /** * Determine if the user is authorized to make this request. */ public function authorize(): bool { // User must be authenticated to update their email return Auth::check(); } /** * Get the validation rules that apply to the request. * * @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> */ public function rules(): array { return [ 'email' => [ 'required', 'email:rfc,dns', 'max:255', 'unique:users,email,' . Auth::id(), 'different:' . Auth::user()->email // Must be different from current email ] ]; } /** * Get custom error messages for validator errors. * * @return array<string, string> */ public function messages(): array { return [ 'email.required' => 'Email обязателен для заполнения', 'email.email' => 'Введите корректный email адрес', 'email.unique' => 'Этот email уже используется другим пользователем', 'email.different' => 'Новый email должен отличаться от текущего' ]; } /** * Get custom attributes for validator errors. * * @return array<string, string> */ public function attributes(): array { return [ 'email' => 'Email' ]; } /** * Configure the validator instance. * * @param \Illuminate\Validation\Validator $validator * @return void */ public function withValidator($validator): void { // Additional validation logic can be added here $validator->after(function ($validator) { // Custom validation rules can be added here }); } }