11import 'package:dart_frog/dart_frog.dart' ;
22import 'package:ht_api/src/services/auth_token_service.dart' ;
33import 'package:ht_shared/ht_shared.dart' ;
4+ import 'package:logging/logging.dart' ;
5+
6+ final _log = Logger ('AuthMiddleware' );
47
58/// Middleware to handle authentication by verifying Bearer tokens.
69///
@@ -17,69 +20,69 @@ import 'package:ht_shared/ht_shared.dart';
1720Middleware authenticationProvider () {
1821 return (handler) {
1922 return (context) async {
20- print ( '[AuthMiddleware] Entered.' );
23+ _log. finer ( ' Entered.' );
2124 // Read the interface type
2225 AuthTokenService tokenService;
2326 try {
24- print ( '[AuthMiddleware] Attempting to read AuthTokenService...' );
27+ _log. finer ( ' Attempting to read AuthTokenService...' );
2528 tokenService = context.read <AuthTokenService >();
26- print ( '[AuthMiddleware] Successfully read AuthTokenService.' );
29+ _log. finer ( ' Successfully read AuthTokenService.' );
2730 } catch (e, s) {
28- print ( '[AuthMiddleware] FAILED to read AuthTokenService: $ e \n $ s ' );
31+ _log. severe ( ' FAILED to read AuthTokenService.' , e, s );
2932 // Re-throw the error to be caught by the main error handler
3033 rethrow ;
3134 }
3235 User ? user;
3336
3437 // Extract the Authorization header
35- print ( '[AuthMiddleware] Attempting to read Authorization header...' );
38+ _log. finer ( ' Attempting to read Authorization header...' );
3639 final authHeader = context.request.headers['Authorization' ];
37- print ( '[AuthMiddleware] Authorization header value: $authHeader ' );
40+ _log. finer ( ' Authorization header value: $authHeader ' );
3841
3942 if (authHeader != null && authHeader.startsWith ('Bearer ' )) {
4043 // Extract the token string
4144 final token = authHeader.substring (7 ); // Length of 'Bearer '
42- print ( '[AuthMiddleware] Extracted Bearer token.' );
45+ _log. finer ( ' Extracted Bearer token.' );
4346 try {
44- print ( '[AuthMiddleware] Attempting to validate token...' );
47+ _log. finer ( ' Attempting to validate token...' );
4548 // Validate the token using the service
4649 user = await tokenService.validateToken (token);
47- print (
48- '[AuthMiddleware] Token validation returned: ${user ?.id ?? 'null' }' ,
50+ _log. finer (
51+ 'Token validation returned: ${user ?.id ?? 'null' }' ,
4952 );
5053 if (user != null ) {
51- print (
52- '[AuthMiddleware] Authentication successful for user: ${user .id }' ,
53- );
54+ _log.info ('Authentication successful for user: ${user .id }' );
5455 } else {
55- print (
56- '[AuthMiddleware] Invalid token provided (validateToken returned null).' ,
56+ _log. warning (
57+ 'Invalid token provided (validateToken returned null).' ,
5758 );
5859 // Optional: Could throw UnauthorizedException here if *all* routes
5960 // using this middleware strictly require a valid token.
6061 // However, providing null allows routes to handle optional auth.
6162 }
6263 } on HtHttpException catch (e) {
6364 // Log token validation errors from the service
64- print ('Token validation failed: $ e ' );
65+ _log. warning ('Token validation failed.' , e );
6566 // Let the error propagate if needed, or handle specific cases.
6667 // For now, we treat validation errors as resulting in no user.
6768 user = null ; // Keep user null if HtHttpException occurred
6869 } catch (e, s) {
6970 // Catch unexpected errors during validation
70- print (
71- '[AuthMiddleware] Unexpected error during token validation: $e \n $s ' ,
71+ _log.severe (
72+ 'Unexpected error during token validation.' ,
73+ e,
74+ s,
7275 );
7376 user = null ; // Keep user null if unexpected error occurred
7477 }
7578 } else {
76- print ( '[AuthMiddleware] No valid Bearer token found in header.' );
79+ _log. finer ( ' No valid Bearer token found in header.' );
7780 }
7881
7982 // Provide the User object (or null) into the context
8083 // This makes `context.read<User?>()` available downstream.
81- print (
82- '[AuthMiddleware] Providing User (${user ?.id ?? 'null' }) to context.' ,
84+ _log. finer (
85+ 'Providing User (${user ?.id ?? 'null' }) to context.' ,
8386 );
8487 return handler (context.provide <User ?>(() => user));
8588 };
@@ -96,14 +99,14 @@ Middleware requireAuthentication() {
9699 return (context) {
97100 final user = context.read <User ?>();
98101 if (user == null ) {
99- print (
102+ _log. warning (
100103 'Authentication required but no valid user found. Denying access.' ,
101104 );
102105 // Throwing allows the central errorHandler to create the 401 response.
103106 throw const UnauthorizedException ('Authentication required.' );
104107 }
105108 // If user exists, proceed to the handler
106- print ('Authentication check passed for user: ${user .id }' );
109+ _log. info ('Authentication check passed for user: ${user .id }' );
107110 return handler (context.provide <User >(() => user));
108111 };
109112 };
0 commit comments