TF-606 Implement refresh token when access token expired

This commit is contained in:
dab246
2022-06-03 17:17:31 +07:00
committed by Dat H. Pham
parent 02a5fa4b4f
commit 693f4dbc15
14 changed files with 248 additions and 54 deletions
+20 -4
View File
@@ -1,17 +1,33 @@
import 'package:core/utils/app_logger.dart';
import 'package:equatable/equatable.dart';
import 'package:model/oidc/token_id.dart';
class Token extends Equatable {
const Token(this.token, this.tokenId);
class Token with EquatableMixin {
final String token;
final TokenId tokenId;
final String refreshToken;
final DateTime? expiredTime;
const Token(this.token, this.tokenId, this.refreshToken, {this.expiredTime});
@override
List<Object> get props => [token, tokenId];
List<Object?> get props => [token, tokenId, refreshToken, expiredTime];
}
extension TokenExtension on Token {
bool isTokenValid() => token.isNotEmpty && tokenId.uuid.isNotEmpty;
}
bool get isExpired {
if (expiredTime != null) {
final now = DateTime.now();
log('TokenExtension::isExpired(): TIME_NOW: $now');
log('TokenExtension::isExpired(): EXPIRED_DATE: $expiredTime');
return expiredTime!.isBefore(now);
}
return false;
}
String get tokenIdHash => tokenId.uuid.hashCode.toString();
}
+3 -5
View File
@@ -17,10 +17,6 @@ class TokenOIDC with EquatableMixin {
{this.expiredTime}
);
factory TokenOIDC.empty() {
return TokenOIDC('', TokenId(''), '');
}
@override
List<Object?> get props => [token, tokenId, expiredTime, refreshToken];
}
@@ -30,6 +26,8 @@ extension TokenOIDCExtension on TokenOIDC {
bool isTokenValid() => token.isNotEmpty && tokenId.uuid.isNotEmpty;
Token toToken() {
return Token(token, tokenId);
return Token(token, tokenId, refreshToken, expiredTime: expiredTime);
}
String get tokenIdHash => tokenId.uuid.hashCode.toString();
}