repuve-backend-v1/app/Http/Requests/Repuve/ModuleUpdateRequest.php
Juan Felipe Zapata Moreno 31746867b8 feat: Agrega validaciones de autorización y nuevas clases Request
- Se agregó autorización basada en permisos en múltiples Requests.
- Nuevos Requests para motivos de cancelación y tags con validación y autorización.
- Se añadieron métodos de roles al modelo User (isDeveloper, isAdmin, isPrimary).
- Se actualizó el acceso a Telescope usando validación por roles.
- Mejora en el manejo de excepciones de autorización.
- Actualización de RoleSeeder con nuevas convenciones de permisos.
- Actualización de dependencias (composer.lock).
2026-02-23 13:05:53 -06:00

54 lines
2.3 KiB
PHP

<?php
namespace App\Http\Requests\Repuve;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class ModuleUpdateRequest extends FormRequest
{
public function authorize(): bool
{
return auth()->user()->can('modules.edit');
}
public function rules(): array
{
return [
'name' => ['nullable', 'string', 'max:50', Rule::unique('modules', 'name')->ignore($this->route('module'))],
'municipality_id' => ['nullable', 'integer', 'exists:municipalities,id'],
'responsible_id' => ['nullable', 'integer', 'exists:users,id'],
'address' => ['nullable', 'string', 'max:50'],
'colony' => ['nullable', 'string', 'max:100'],
'cp' => ['nullable', 'string', 'max:10'],
'longitude' => ['nullable', 'numeric', 'between:-180,180'],
'latitude' => ['nullable', 'numeric', 'between:-90,90'],
'status' => ['nullable', 'boolean'],
];
}
public function messages(): array
{
return [
'name.string' => 'El nombre debe ser texto',
'name.unique' => 'Ya existe un módulo con ese nombre.',
'name.max' => 'El nombre no debe superar los 50 caracteres',
'municipality_id.integer' => 'El municipio debe ser un número entero',
'municipality_id.exists' => 'El municipio seleccionado no existe',
'responsible_id.integer' => 'El responsable debe ser un número entero',
'responsible_id.exists' => 'El responsable seleccionado no existe',
'address.string' => 'La dirección debe ser texto',
'address.max' => 'La dirección no debe superar los 50 caracteres',
'colony.string' => 'La colonia debe ser texto',
'colony.max' => 'La colonia no debe superar los 100 caracteres',
'cp.string' => 'El código postal debe ser texto',
'cp.max' => 'El código postal no debe superar los 10 caracteres',
'longitude.numeric' => 'La longitud debe ser un número',
'longitude.between' => 'La longitud debe estar entre -180 y 180',
'latitude.numeric' => 'La latitud debe ser un número',
'latitude.between' => 'La latitud debe estar entre -90 y 90',
'status.boolean' => 'El status debe ser un valor booleano',
];
}
}