user static method

Future<User?> user(
  1. HttpRequest request
)

Implementation

static Future<User?> user(HttpRequest request) async {
  final cookie = request.cookies.firstWhereOrNull((cookie) => cookie.name == "archery_session");
  final authSessions = App().tryMake<List<AuthSession>>();

  if (cookie == null || authSessions == null || authSessions.isEmpty) {
    return null;
  }

  final session = authSessions.firstWhereOrNull((session) => session.cookie?.value == cookie.value);

  if (session == null) return null;
  if (!_validateSession(session)) {
    await logout(request);
    return null;
  }
  session.lastActivity = DateTime.now();

  final sessionRecord = await Model.firstWhere<AuthSession>(field: "email", value: session.email);

  if (sessionRecord != null) {
    return await Model.firstWhere<User>(field: "email", value: sessionRecord.email);
  }
  return null;
}