Files
myice_mobile/lib/providers/auth_provider.dart
T
2026-07-06 18:01:38 +02:00

55 lines
1.3 KiB
Dart

import 'package:flutter/foundation.dart';
import '../models/user_info.dart';
import '../services/api_service.dart';
import '../services/auth_service.dart';
class AuthProvider extends ChangeNotifier {
final AuthService _authService = AuthService();
final ApiService _apiService;
bool isAuthenticated = false;
UserInfo? userInfo;
AuthProvider(this._apiService);
Future<void> init() async {
final token = await _authService.getStoredToken();
if (token != null) {
_apiService.setBearerToken(token);
try {
userInfo = await _apiService.getUserInfo();
isAuthenticated = true;
} catch (e) {
// Token expired, clear it
await _authService.logout();
_apiService.clearBearerToken();
}
}
notifyListeners();
}
Future<void> login() async {
final token = await _authService.login();
if (token != null) {
_apiService.setBearerToken(token);
try {
userInfo = await _apiService.getUserInfo();
isAuthenticated = true;
} catch (e) {
isAuthenticated = false;
}
} else {
isAuthenticated = false;
}
notifyListeners();
}
Future<void> logout() async {
await _authService.logout();
_apiService.clearBearerToken();
isAuthenticated = false;
userInfo = null;
notifyListeners();
}
}