add secure storage (not working)
Some checks failed
Release / meta (push) Successful in 2s
Release / android-build (push) Successful in 6m25s
Release / release-dev (push) Has been skipped
Release / release-master (push) Has been skipped
Release / linux-build (push) Failing after 2m16s

This commit is contained in:
2025-12-12 09:58:52 +00:00
parent 292163bda6
commit 4d483495fc
10 changed files with 155 additions and 10 deletions

View File

@@ -1,13 +1,16 @@
import 'package:flutter/foundation.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:mileograph_flutter/objects/objects.dart';
import 'package:mileograph_flutter/services/apiService.dart';
import 'package:shared_preferences/shared_preferences.dart';
class AuthService extends ChangeNotifier {
final ApiService api;
static const _tokenKey = 'auth_token';
bool _restoring = false;
// secure storage instance
final FlutterSecureStorage _storage = const FlutterSecureStorage();
AuthService({required this.api});
AuthenticatedUserData? _user;
@@ -73,9 +76,10 @@ class AuthService extends ChangeNotifier {
if (_restoring || _user != null) return;
_restoring = true;
try {
final prefs = await SharedPreferences.getInstance();
final token = prefs.getString(_tokenKey);
// read token from secure storage
final token = await _storage.read(key: _tokenKey);
if (token == null || token.isEmpty) return;
final userResponse = await api.get(
'/users/me',
headers: {
@@ -83,6 +87,7 @@ class AuthService extends ChangeNotifier {
'accept': 'application/json',
},
);
setLoginData(
userId: userResponse['user_id'],
username: userResponse['username'],
@@ -98,13 +103,11 @@ class AuthService extends ChangeNotifier {
}
Future<void> _persistToken(String token) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString(_tokenKey, token);
await _storage.write(key: _tokenKey, value: token);
}
Future<void> _clearToken() async {
final prefs = await SharedPreferences.getInstance();
await prefs.remove(_tokenKey);
await _storage.delete(key: _tokenKey);
}
Future<void> register({
@@ -126,9 +129,13 @@ class AuthService extends ChangeNotifier {
await api.postForm('/register', formData);
}
void logout() {
Future<void> handleTokenExpired() async {
_user = null;
_clearToken();
await _clearToken();
notifyListeners();
}
void logout() {
handleTokenExpired(); // reuse
}
}