login static method

Future<bool> login({
  1. required String email,
  2. required String password,
})

Implementation

static Future<bool> login({required String email, required String password}) async {
  try {
    final authSessions = App().tryMake<List<AuthSession>>();
    if (authSessions == null) return false;

    final authSession = authSessions.firstWhereOrNull((session) => session.email == email);

    if (authSession != null) {
      authSession.lastActivity = DateTime.now();
      return true;
    } else {
      final user = await Model.firstWhere<User>(field: "email", value: email);

      if (user != null && Hasher.verifyPassword(password, user.password)) {
        final newAuthSession = await Model.create<AuthSession>(fromJson: {"email": user.email, "token": App.generateKey()});
        if (newAuthSession == null) return false;
        authSession?.lastActivity = DateTime.now();
        authSessions.add(newAuthSession);
        return true;
      }
    }

    return false;
  } catch (e) {
    return false;
  }
}