Neda/admin_panel/lib/providers/auth_provider.dart
2026-03-07 19:18:52 +03:30

50 lines
1.3 KiB
Dart

import 'package:flutter/material.dart';
import '../services/service_locator.dart';
import '../services/api/api_client.dart';
enum AuthStatus { initial, loading, authenticated, unauthenticated }
class AuthProvider extends ChangeNotifier {
AuthStatus _status = AuthStatus.initial;
String? _error;
String? _username;
AuthStatus get status => _status;
String? get error => _error;
String? get username => _username;
bool get isAuthenticated => _status == AuthStatus.authenticated;
Future<bool> login(String username, String secret) async {
_status = AuthStatus.loading;
_error = null;
notifyListeners();
try {
final token = await ServiceLocator().auth.login(username, secret);
ServiceLocator().setToken(token);
_username = username;
_status = AuthStatus.authenticated;
notifyListeners();
return true;
} on ApiException catch (e) {
_error = e.message;
_status = AuthStatus.unauthenticated;
notifyListeners();
return false;
} catch (e) {
_error = 'خطا در اتصال به سرور';
_status = AuthStatus.unauthenticated;
notifyListeners();
return false;
}
}
void logout() {
ServiceLocator().clearToken();
_username = null;
_status = AuthStatus.unauthenticated;
_error = null;
notifyListeners();
}
}