refreshToken method
Refresh JWT token
Implementation
Future<AuthResult> refreshToken(String token) async {
try {
// Verify existing token
final jwt = JWT.verify(token, secret: jwtSecret);
if (jwt == null) {
return AuthResult.error('Invalid token');
}
// Create a copy of the payload and remove 'iat' so it gets regenerated
final payloadCopy = Map<String, dynamic>.from(jwt.payload);
payloadCopy.remove('iat');
// Create new token with updated expiration
final newJwt = JWT.create(
payloadCopy,
secret: jwtSecret,
expiresIn: jwtDuration,
);
return AuthResult.success(
message: 'Token refreshed',
token: newJwt.token,
);
} catch (e) {
return AuthResult.error('Token refresh failed: ${e.toString()}');
}
}