admin static method

Middleware admin({
  1. String redirectTo = '/login',
  2. List<String> except = const [],
  3. String guard = 'web',
})

Factory method for admin-only middleware

Implementation

static Middleware admin({
  String redirectTo = '/login',
  List<String> except = const [],
  String guard = 'web',
}) {
  return Middleware(
    (Request request, ResponseContract response, NextFunction next) async {
      // First check basic authentication
      if (_isExcluded(request.path, except)) {
        return next();
      }

      final user = request.session.get('user') as Map<String, dynamic>?;
      if (user == null) {
        await _handleUnauthenticated(request, response, redirectTo);
        return;
      }

      // Check admin role (simplified)
      final role = user['role'] as String?;
      if (role != 'admin') {
        request.session
            .flash('message', 'Access denied. Admin privileges required.');
        if (response is Response) {
          await response.redirect('/dashboard');
        }
        return;
      }

      await next();
    },
    priority: MiddlewarePriority.auth,
    name: 'web-admin',
  );
}