verifyToken method
Verifies an authentication token
token The token to verify
Returns the user associated with the token
Implementation
@override
Future<Authenticatable> verifyToken(String token) async {
final tokenRecord = await _tokenService.findToken(token);
if (tokenRecord == null) {
throw AuthException('Invalid token');
}
// Check token expiry
final expiresAt = tokenRecord['expires_at'] as String?;
if (expiresAt != null) {
final expiry = DateTime.parse(expiresAt);
if (DateTime.now().isAfter(expiry)) {
await _tokenService.deleteToken(token);
throw AuthException('Token has expired');
}
}
// Get user data
final provider = await _getProviderConfig();
final table = provider['table'] as String;
final primaryKey = provider['primary_key'] as String;
final userId = tokenRecord['tokenable_id'];
final userData = await _repository.findUserById(userId, table, primaryKey);
if (userData == null) {
throw AuthException('User not found');
}
return DatabaseAuthenticatable.fromProviderConfig(
userData,
provider,
);
}