generateTokens method
Generates tokens for a user
user The user to generate tokens for
Returns authentication response with tokens
Implementation
@override
Future<AuthResponse> generateTokens(Authenticatable user) async {
final userId = user.getAuthIdentifier();
final accessToken = _tokenGenerator.generateToken(
prefix: userId.toString(),
);
// Store access token in database using injected service
final tokenData = {
'token': accessToken,
'tokenable_id': userId,
'guard': _providerKey,
'type': 'access',
'created_at': DateTime.now().toIso8601String(),
};
if (_tokenExpiry != null) {
tokenData['expires_at'] =
DateTime.now().add(_tokenExpiry).toIso8601String();
}
await _tokenService.storeToken(tokenData);
// For Token driver, we can optionally generate refresh tokens too
// This provides consistency with JWT driver behavior
String? refreshToken;
if (_refreshTokenExpiry != null) {
refreshToken = _tokenGenerator.generateToken();
// Store refresh token
final refreshTokenData = {
'token': refreshToken,
'tokenable_id': userId,
'guard': _providerKey,
'type': 'refresh',
'created_at': DateTime.now().toIso8601String(),
'expires_at': DateTime.now().add(_refreshTokenExpiry).toIso8601String(),
};
await _tokenService.storeToken(refreshTokenData);
}
return AuthResponse(
user: user.toAuthArray(),
accessToken: accessToken,
refreshToken: refreshToken,
expiresIn: _tokenExpiry?.inSeconds,
refreshExpiresIn: 604800, // 7 days
);
}