middleware property

Middleware get middleware

Middleware function for request handling

Implementation

Middleware get middleware {
  return (Handler handler) {
    return (Request request) async {
      try {
        // Extract token from Authorization header
        final token = _extractToken(request);

        Map<String, dynamic> authContext = {};
        authContext['is_authenticated'] = false;

        if (token != null) {
          // Verify JWT token
          final jwt = JWT.verify(token, secret: jwtSecret);

          if (jwt != null) {
            authContext['user'] = jwt.payload;
            authContext['auth_token'] = token;
            authContext['is_authenticated'] = true;
          }
        }

        // Add auth context to request
        final updatedRequest = request.change(context: authContext);

        return await handler(updatedRequest);
      } catch (e) {
        // Error in authentication
        final authContext = {
          'is_authenticated': false,
          'auth_error': e.toString(),
        };

        final updatedRequest = request.change(context: authContext);
        return await handler(updatedRequest);
      }
    };
  };
}