import 'package:relic/relic.dart'; import 'crypto_service.dart'; final userIdProperty = ContextProperty('userId'); final usernameProperty = ContextProperty('username'); final userLocalIdProperty = ContextProperty('userLocalId'); /// JWT authentication middleware final jwtMiddleware = createMiddleware( onRequest: (request) { final authHeader = request.headers.authorization; if (authHeader is! BearerAuthorizationHeader) { return Response.unauthorized( body: Body.fromString('Bearer token required'), ); } final payload = AuthService.verifyToken(authHeader.token); if (payload == null) { return Response.forbidden( body: Body.fromString('Invalid or expired token'), ); } final userId = payload['sub'] as String?; final username = payload['username'] as String?; if (userId == null) { return Response.forbidden( body: Body.fromString('Invalid token payload'), ); } userIdProperty[request] = userId; if (username != null) { usernameProperty[request] = username; } return null; // Continue to handler }, );