login method
- User user
login a User by checking if he exists in the remote database
Implementation
Future<User?> login(User user) async {
// if user is already logged in
await connectionGuard();
_user = user;
var res = (await postJSON(RequestData(
'/login',
))) ////logIfFailed: false)))
?.forceRes();
if (res != null && (res.statusCode ~/ 100 == 2)) {
//success
final resb = jsonDecode(res.body)['user'];
try {
final dbgMap = (resb is Map) ? resb : null;
debugPrint('login response user keys: ${dbgMap?.keys.toList()}');
debugPrint('login response Def_Login_ID: ${dbgMap?['Def_Login_ID']}');
} catch (_) {}
// Best-effort: set Def_Login_ID explicitly (some maps/keys differ across backends).
try {
final map = resb as Map?;
final v = map?['Def_Login_ID'] ??
map?['def_login_id'] ??
map?['Login_ID_Pruefer'] ??
map?['login_id_pruefer'];
if (v is int) _user?.defLoginId = v;
if (v is num) _user?.defLoginId = v.toInt();
if (v is String) _user?.defLoginId = int.tryParse(v);
} catch (_) {}
_user?.fromMap((resb is Map) ? resb.cast<String, dynamic>() : null);
debugPrint(
'login parsed user: KZL=${_user?.name}, Def_Login_ID=${_user?.defLoginId}');
return _user;
}
throw ResponseException(res);
}