add refresh token support
This commit is contained in:
@@ -10,7 +10,8 @@ class TokenStorageService {
|
||||
|
||||
factory TokenStorageService() => _instance;
|
||||
|
||||
static const _tokenKey = 'auth_token';
|
||||
static const _accessTokenKey = 'auth_token';
|
||||
static const _refreshTokenKey = 'refresh_token';
|
||||
final FlutterSecureStorage _secureStorage = const FlutterSecureStorage();
|
||||
|
||||
Future<SharedPreferences> get _prefs async =>
|
||||
@@ -18,17 +19,17 @@ class TokenStorageService {
|
||||
|
||||
Future<void> setToken(String token) async {
|
||||
try {
|
||||
await _secureStorage.write(key: _tokenKey, value: token);
|
||||
await _secureStorage.write(key: _accessTokenKey, value: token);
|
||||
} catch (_) {
|
||||
// ignore secure storage failures in debug/unsupported environments
|
||||
}
|
||||
final prefs = await _prefs;
|
||||
await prefs.setString(_tokenKey, token);
|
||||
await prefs.setString(_accessTokenKey, token);
|
||||
}
|
||||
|
||||
Future<String?> getToken() async {
|
||||
try {
|
||||
final secured = await _secureStorage.read(key: _tokenKey);
|
||||
final secured = await _secureStorage.read(key: _accessTokenKey);
|
||||
if (secured != null && secured.isNotEmpty) {
|
||||
return secured;
|
||||
}
|
||||
@@ -36,22 +37,48 @@ class TokenStorageService {
|
||||
// ignore and fall back
|
||||
}
|
||||
final prefs = await _prefs;
|
||||
final token = prefs.getString(_tokenKey);
|
||||
final token = prefs.getString(_accessTokenKey);
|
||||
return (token == null || token.isEmpty) ? null : token;
|
||||
}
|
||||
|
||||
Future<void> clearToken() async {
|
||||
try {
|
||||
await _secureStorage.delete(key: _tokenKey);
|
||||
await _secureStorage.delete(key: _accessTokenKey);
|
||||
await _secureStorage.delete(key: _refreshTokenKey);
|
||||
} catch (_) {
|
||||
// ignore
|
||||
}
|
||||
final prefs = await _prefs;
|
||||
await prefs.remove(_tokenKey);
|
||||
await prefs.remove(_accessTokenKey);
|
||||
await prefs.remove(_refreshTokenKey);
|
||||
}
|
||||
|
||||
Future<bool> hasToken() async {
|
||||
final token = await getToken();
|
||||
return token != null && token.isNotEmpty;
|
||||
}
|
||||
|
||||
Future<void> setRefreshToken(String token) async {
|
||||
try {
|
||||
await _secureStorage.write(key: _refreshTokenKey, value: token);
|
||||
} catch (_) {
|
||||
// ignore secure storage failures in debug/unsupported environments
|
||||
}
|
||||
final prefs = await _prefs;
|
||||
await prefs.setString(_refreshTokenKey, token);
|
||||
}
|
||||
|
||||
Future<String?> getRefreshToken() async {
|
||||
try {
|
||||
final secured = await _secureStorage.read(key: _refreshTokenKey);
|
||||
if (secured != null && secured.isNotEmpty) {
|
||||
return secured;
|
||||
}
|
||||
} catch (_) {
|
||||
// ignore and fall back
|
||||
}
|
||||
final prefs = await _prefs;
|
||||
final token = prefs.getString(_refreshTokenKey);
|
||||
return (token == null || token.isEmpty) ? null : token;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user