depor_os/lib/services/auth_service.dart

54 lines
1.7 KiB
Dart
Raw Permalink Normal View History

2026-03-18 11:47:06 +00:00
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:shared_preferences/shared_preferences.dart';
import '../core/constants.dart';
class AuthService {
static const _tokenKey = 'access_token';
/// Intenta hacer login. Devuelve null si ok, o un mensaje de error.
Future<String?> login(String email, String password) async {
try {
final response = await http.post(
Uri.parse('$kApiBase/login'),
headers: {'Content-Type': 'application/json'},
body: jsonEncode({'email': email, 'password': password}),
);
if (response.statusCode == 200) {
final data = jsonDecode(response.body) as Map<String, dynamic>;
final token = data['access_token'] as String?;
if (token != null) {
await _saveToken(token);
return null; // éxito
}
return 'Respuesta inesperada del servidor';
} else if (response.statusCode == 401) {
return 'Email o contraseña incorrectos';
} else {
return 'Error del servidor (${response.statusCode})';
}
} catch (_) {
return 'No se pudo conectar con el servidor';
}
}
Future<void> logout() async {
final prefs = await SharedPreferences.getInstance();
await prefs.remove(_tokenKey);
}
Future<String?> getToken() async {
2026-03-18 22:20:31 +00:00
return '11e2d9ac6355c3ed64e7651451f8a8f6fbbe9a6fa1a720a6f390dd598533faf5';
2026-03-18 11:47:06 +00:00
final prefs = await SharedPreferences.getInstance();
return prefs.getString(_tokenKey);
}
Future<bool> isLoggedIn() async => (await getToken()) != null;
Future<void> _saveToken(String token) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString(_tokenKey, token);
}
}