Frontend first draft
This commit is contained in:
53
frontend/pshared/lib/service/authorization/storage.dart
Normal file
53
frontend/pshared/lib/service/authorization/storage.dart
Normal file
@@ -0,0 +1,53 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
import 'package:pshared/api/errors/unauthorized.dart';
|
||||
import 'package:pshared/api/responses/token.dart';
|
||||
import 'package:pshared/config/constants.dart';
|
||||
import 'package:pshared/service/secure_storage.dart';
|
||||
|
||||
|
||||
class AuthorizationStorage {
|
||||
static final _logger = Logger('service.authorization.storage');
|
||||
|
||||
static Future<TokenData> _getTokenData(String tokenKey) async {
|
||||
_logger.fine('Getting token data');
|
||||
final String? tokenJson = await SecureStorageService.get(tokenKey);
|
||||
if (tokenJson == null || tokenJson.isEmpty) {
|
||||
throw ErrorUnauthorized();
|
||||
}
|
||||
return TokenData.fromJson(jsonDecode(tokenJson));
|
||||
}
|
||||
|
||||
static Future<TokenData> getAccessToken() async {
|
||||
_logger.fine('Getting access token');
|
||||
return _getTokenData(Constants.accessTokenStorageKey);
|
||||
}
|
||||
|
||||
static Future<TokenData> getRefreshToken() async {
|
||||
_logger.fine('Getting refresh token');
|
||||
return _getTokenData(Constants.refreshTokenStorageKey);
|
||||
}
|
||||
|
||||
static Future<void> updateToken(TokenData tokenData) async {
|
||||
_logger.fine('Storing access token...');
|
||||
final tokenJson = jsonEncode(tokenData.toJson());
|
||||
await SecureStorageService.set(Constants.accessTokenStorageKey, tokenJson);
|
||||
}
|
||||
|
||||
static Future<void> updateRefreshToken(TokenData tokenData) async {
|
||||
_logger.fine('Storing refresh token...');
|
||||
final refreshTokenJson = jsonEncode(tokenData.toJson());
|
||||
await SecureStorageService.set(Constants.refreshTokenStorageKey, refreshTokenJson);
|
||||
}
|
||||
|
||||
static Future<void> removeTokens() {
|
||||
return Future.wait([
|
||||
SecureStorageService.delete(Constants.refreshTokenStorageKey),
|
||||
SecureStorageService.delete(Constants.accessTokenStorageKey),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user