enhanced refresh token handelling

This commit is contained in:
Vaibhav Surve 2025-05-06 10:50:45 +05:30
parent e8b580d395
commit e841824f8f

View File

@ -31,6 +31,10 @@ class AuthService {
final jwtToken = responseData['data']['token']; final jwtToken = responseData['data']['token'];
final refreshToken = responseData['data']['refreshToken']; final refreshToken = responseData['data']['refreshToken'];
// Log the tokens using the logger
logger.i("JWT Token: $jwtToken");
if (refreshToken != null) logger.i("Refresh Token: $refreshToken");
await LocalStorage.setJwtToken(jwtToken); await LocalStorage.setJwtToken(jwtToken);
await LocalStorage.setLoggedInUser(true); await LocalStorage.setLoggedInUser(true);
@ -40,9 +44,6 @@ class AuthService {
Get.put(PermissionController()); Get.put(PermissionController());
logger.i("JWT Token: $jwtToken");
if (refreshToken != null) logger.i("Refresh Token: $refreshToken");
return null; // Success return null; // Success
} else if (response.statusCode == 401) { } else if (response.statusCode == 401) {
return {"password": "Invalid email or password"}; return {"password": "Invalid email or password"};
@ -59,25 +60,41 @@ class AuthService {
/// Refreshes the JWT token using the refresh token. /// Refreshes the JWT token using the refresh token.
static Future<bool> refreshToken() async { static Future<bool> refreshToken() async {
final accessToken = await LocalStorage.getJwtToken();
final refreshToken = await LocalStorage.getRefreshToken(); final refreshToken = await LocalStorage.getRefreshToken();
if (refreshToken == null || refreshToken.isEmpty) {
logger.w("No refresh token available."); if (accessToken == null ||
refreshToken == null ||
accessToken.isEmpty ||
refreshToken.isEmpty) {
logger.w("Missing token or refresh token for refresh.");
return false; return false;
} }
final requestBody = {
"token": accessToken,
"refreshToken": refreshToken,
};
logger.i("Sending refresh token request with body: $requestBody");
try { try {
final response = await http.post( final response = await http.post(
Uri.parse("$_baseUrl/auth/refresh-token"), Uri.parse("$_baseUrl/auth/refresh-token"),
headers: {'Content-Type': 'application/json'}, headers: {
body: jsonEncode({"refreshToken": refreshToken}), 'Content-Type': 'application/json',
},
body: jsonEncode(requestBody),
); );
logger.i(
"Refresh token API response (${response.statusCode}): ${response.body}");
final data = jsonDecode(response.body); final data = jsonDecode(response.body);
if (response.statusCode == 200 && data['success'] == true) { if (response.statusCode == 200 && data['success'] == true) {
final newAccessToken = data['data']['accessToken']; final newAccessToken = data['data']['token'];
final newRefreshToken = data['data']['refreshToken']; final newRefreshToken = data['data']['refreshToken'];
// Check if the tokens are valid before saving them
if (newAccessToken == null || newRefreshToken == null) { if (newAccessToken == null || newRefreshToken == null) {
logger.w("Invalid tokens received during refresh."); logger.w("Invalid tokens received during refresh.");
return false; return false;
@ -91,9 +108,6 @@ class AuthService {
return true; return true;
} else { } else {
logger.w("Refresh failed: ${data['message']}"); logger.w("Refresh failed: ${data['message']}");
await LocalStorage.removeToken('jwt_token');
await LocalStorage.removeToken('refresh_token');
await LocalStorage.setLoggedInUser(false);
return false; return false;
} }
} catch (e) { } catch (e) {