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 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; 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 logout() async { final prefs = await SharedPreferences.getInstance(); await prefs.remove(_tokenKey); } Future getToken() async { final prefs = await SharedPreferences.getInstance(); return prefs.getString(_tokenKey); } Future isLoggedIn() async => (await getToken()) != null; Future _saveToken(String token) async { final prefs = await SharedPreferences.getInstance(); await prefs.setString(_tokenKey, token); } }