login method
Implementation
Future<bool> login({
required String user,
required String pass,
}) async {
try {
console.log('Iniciando login para usuario: $user');
// realiza la consulta
var r = await ChalonaApp.current.request(
'/login',
data: {
'user': user,
'pass': pass,
'app': app,
'project': project,
},
);
console.log('Respuesta de login recibida');
console.log(r.data);
reset(r.data);
_token = r.data['token'];
if (_token.isEmpty) {
throw Exception('Token vacío en respuesta de login');
}
if (ChalonaStorage.current == null) {
throw Exception('ChalonaStorage no esta inicializado');
} else {
console.log('Guardando token y datos de sesión');
await ChalonaStorage.current?.set('token', _token);
await ChalonaStorage.current?.setMap('session', r.data);
var jj = await ChalonaStorage.current?.getMap('session');
console.log(jj);
console.log('Token y datos de sesión guardados');
}
onStartSession.trigger();
console.log('Sesión iniciada correctamente');
return true;
} catch (e) {
console.error('Error en login:');
if (e is ChalonaResponse) {
console.error(e.msg);
} else {
console.error(e.toString());
}
// Limpiar estado en caso de error
_token = '';
if (ChalonaStorage.current != null) {
console.log('Limpiando datos de sesión por error');
await ChalonaStorage.current?.unset('token');
await ChalonaStorage.current?.unset('session');
}
return false;
}
}