import type { HttpContext } from '@adonisjs/core/http' import type { NextFn } from '@adonisjs/core/types/http' /** * AdminMiddleware — bloque l'accès aux endpoints réservés aux admins. * * Doit être stacké APRÈS auth() (l'auth est responsable de poser ctx.auth.user). * Un user authentifié mais sans `is_admin` reçoit 403 ; un user non authentifié * a déjà reçu 401 par le middleware auth. */ export default class AdminMiddleware { async handle(ctx: HttpContext, next: NextFn) { const user = ctx.auth.getUserOrFail() if (!user.isAdmin) { return ctx.response.status(403).json({ error: 'admin_only' }) } return next() } }