65 lines
2.4 KiB
PHP
Executable File
65 lines
2.4 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Http\Requests;
|
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
|
class AdminUserRequest extends FormRequest
|
|
{
|
|
public function authorize(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public function rules(): array
|
|
{
|
|
$rules = [
|
|
'name' => ['required', 'string', 'max:255'],
|
|
'email' => ['required', 'string', 'email', 'max:255', 'unique:admin_users,email'],
|
|
'password' => ['required', 'string', 'min:8', 'max:255'],
|
|
'rol' => ['required', 'in:super_admin,admin'],
|
|
'avatar' => ['nullable', 'image', 'mimes:jpeg,png,gif,webp', 'max:5120'],
|
|
];
|
|
|
|
// En actualización, password no es obligatorio (puede mantener el actual)
|
|
if ($this->isMethod('PATCH') || $this->isMethod('PUT')) {
|
|
$rules['password'] = ['nullable', 'string', 'min:8', 'max:255'];
|
|
$rules['email'] = ['required', 'string', 'email', 'max:255', 'unique:admin_users,email,'.$this->route('admin_user')];
|
|
$rules['avatar'] = ['nullable', 'image', 'mimes:jpeg,png,gif,webp', 'max:5120'];
|
|
}
|
|
|
|
return $rules;
|
|
}
|
|
|
|
public function messages(): array
|
|
{
|
|
return [
|
|
'name.required' => 'El nombre es obligatorio.',
|
|
'name.max' => 'El nombre no puede exceder 255 caracteres.',
|
|
'email.required' => 'El email es obligatorio.',
|
|
'email.email' => 'El email debe ser una dirección válida.',
|
|
'email.max' => 'El email no puede exceder 255 caracteres.',
|
|
'email.unique' => 'El email ya está en uso.',
|
|
'password.required' => 'La contraseña es obligatoria.',
|
|
'password.min' => 'La contraseña debe tener al menos 6 caracteres.',
|
|
'password.max' => 'La contraseña no puede exceder 255 caracteres.',
|
|
'rol.required' => 'El rol es obligatorio.',
|
|
'rol.in' => 'El rol debe ser super_admin o admin.',
|
|
'avatar.image' => 'El avatar debe ser una imagen.',
|
|
'avatar.mimes' => 'El formato del avatar no es válido.',
|
|
'avatar.max' => 'El avatar no puede exceder 5MB.',
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Configure the validator instance.
|
|
*/
|
|
public function withValidator($validator): void
|
|
{
|
|
$validator->after(function ($validator) {
|
|
// Validar que un admin no pueda crear/editar otro super_admin
|
|
// Esta validación se maneja en el controlador
|
|
});
|
|
}
|
|
}
|