Files
tm_app/lib/data/services/auth_service.dart
T
2025-08-17 09:46:33 +03:30

53 lines
1.5 KiB
Dart

// ignore_for_file: prefer_single_quotes
import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:tm_app/data/services/model/login_response/login_response_model.dart';
import 'package:tm_app/data/services/model/logout_response/logout_response.dart';
import '../../core/network/network_manager.dart';
import '../../core/utils/result.dart';
class AuthService {
AuthService({required NetworkManager networkManager})
: _networkManager = networkManager;
final NetworkManager _networkManager;
Future<Result<LoginResponseModel>> login({
required String username,
required String password,
}) async {
var data = jsonEncode({"password": password, "username": username});
final result = await _networkManager.makeRequest(
'/admin/v1/profile/login',
method: 'POST',
(json) => LoginResponseModel.fromJson(json),
data: data,
);
if (result is Ok<LoginResponseModel>) {
final prefs = await SharedPreferences.getInstance();
final token = result.value.data.accessToken;
await prefs.setString('bearer', token);
}
return result;
}
Future<Result<LogoutResponse>> logout() async {
final result = await _networkManager.makeRequest(
'/admin/v1/profile/logout',
method: 'DELETE',
(json) => LogoutResponse.fromJson(json),
);
return result;
}
Future<void> localLogout() async {
final prefs = await SharedPreferences.getInstance();
await prefs.remove('bearer');
}
}