middleware method
Create guard middleware
Implementation
@override
Middleware middleware() {
return (Handler handler) {
return (Request request) async {
// Check if route is excepted
if (_isExcepted(request.url.path)) {
return await handler(request);
}
// Extract and verify JWT token
final token = _extractToken(request);
if (token == null) {
return Response(401,
body: '{"error": "Unauthorized", "message": "No token provided"}',
headers: {'Content-Type': 'application/json'});
}
final jwt = JWT.verify(token, secret: jwtSecret);
if (jwt == null || _isTokenExpired(jwt)) {
return Response(401,
body:
'{"error": "Unauthorized", "message": "Invalid or expired token"}',
headers: {'Content-Type': 'application/json'});
}
// Add user data to request context
final authContext = {
'user': jwt.payload,
'auth_token': token,
'is_authenticated': true,
'guard': 'jwt',
};
final updatedRequest = request.change(context: authContext);
return await handler(updatedRequest);
};
};
}