Aprende a configurar logging por canales en Laravel, registrar eventos con el helperlogger, y controlar la aprobación de calificaciones con Gates y Resources. Aquí verás cómo ajustar .env, proteger rutas y filtrar listados por estado aprobado, con ejemplos claros y listos para aplicar.
¿Cómo configurar el logging por canales en Laravel?
Laravel organiza los logs por canales asociados a un driver. En config/logging.php, la variable de entorno LOG_CHANNEL define el canal por defecto: usualmente stack con driverstack, que centraliza todo en un único archivo dentro de storage/logs.
Cambia a daily para un archivo de log por día.
Ubicación de archivos: storage/logs.
Configuración de entorno: .env con LOG_CHANNEL.
Ejemplo para activar el driver diario:
# .env
LOG_CHANNEL=daily
Para escribir mensajes, usa el helperlogger() desde consola con php artisan tinker y los métodos de nivel: error, info, warning.
php artisan tinker
>>> logger()->error('Soy un error');>>> logger()->info('Soy un mensaje');
Claves que debes retener:
Canales y drivers: cada canal usa un driver específico.
stack vs daily: un archivo único vs un archivo por día.
Niveles de log: error, info, warning, etc.
¿Cómo proteger la aprobación con gates y controladores?
La aprobación de calificaciones queda restringida a usuarios administradores mediante un Gate. En AuthServiceProvider, define la política admin que recibe el usuario y valida que is_admin sea true.
En el controlador que aprueba, autoriza con Gate::authorize antes de ejecutar la lógica. El método establece la fecha de aprobación con Carbon::now() y persiste.
Declara una ruta POST protegida por autenticación para rating/{id}/approve que apunte a approve.
// routes/api.phpRoute::post('rating/{id}/approve',[RatingController::class,'approve']);// protegida por autenticación
Puntos críticos:
Gate admin: autoriza solo si is_admin está en true.
Controlador approve: asigna approved_at con Carbon::now() y devuelve 200.
Ruta protegida: requiere usuario autenticado con token válido antes de aprobar.
¿Qué hacer si recibes 403 al aprobar?
Verifica que el usuario logueado tenga is_admin en true en la base de datos.
Asegura que inicias sesión con el correo correcto y usas el token emitido para ese usuario.
¿Cómo listar y filtrar ratings aprobados con resources?
Agrega en tu configuración un campo que permita requerir aprobación:
// config/*.php'require_approval'=>true,
Crea un método list en el controlador (por ejemplo, ProductRatingController) que solo sea visible para administradores. Construye la consulta con un builder del modelo Rating y devuelve una colección con un resource.