mobile-app/lib/helper/AuthProvider.dart

58 lines
1.6 KiB
Dart

import 'package:daily_ledger/helper/AuthServices.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
class AuthProvider with ChangeNotifier {
final AuthService _authService = AuthService();
String? _token;
String? _refreshToken;
String? get token => _token;
bool get isAuth {
return token != null;
}
Future<void> login(String username, String password) async {
final response = await _authService.login(username, password);
if (response['access'] != null) {
_token = response['access'];
_refreshToken =
response['refresh']; // Assuming refresh token is also returned
await _saveTokens(_token!, _refreshToken!);
notifyListeners();
} else {
throw Exception('Failed to log in');
}
}
Future<void> logout() async {
_token = null;
_refreshToken = null;
await _clearTokens();
notifyListeners();
}
Future<void> _saveTokens(String token, String refreshToken) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString('token', token);
await prefs.setString('refreshToken', refreshToken);
}
Future<void> _clearTokens() async {
final prefs = await SharedPreferences.getInstance();
await prefs.remove('token');
await prefs.remove('refreshToken');
}
Future<void> autoLogin() async {
final prefs = await SharedPreferences.getInstance();
if (prefs.containsKey('token')) {
_token = prefs.getString('token');
_refreshToken =
prefs.getString('refreshToken'); // Load refresh token if needed
notifyListeners();
}
}
}