check static method

Future<bool> check(
  1. HttpRequest request
)

Determines whether the request is currently authenticated.

This checks the session record without looking up the associated user.

Example:

if (await Auth.check(request)) {
  print('User is authenticated');
} else {
  print('Guest request');
}

Implementation

static Future<bool> check(HttpRequest request) async {
  final cookie = request.cookies.firstWhereOrNull((cookie) => cookie.name == "archery_session");

  if (cookie == null) {
    return false;
  }

  final containerSession = _checkContainer(cookie.value);
  if (containerSession != null) {
    if (!_validateSession(containerSession)) {
      await logout(request);
      return false;
    }

    containerSession.lastActivity = DateTime.now();
    return await containerSession.save();
  }

  final sessionRecord = await _checkDB(cookie.value);
  if (sessionRecord != null) {
    if (!_validateSession(sessionRecord)) {
      await logout(request);
      return false;
    }
    sessionRecord.lastActivity = DateTime.now();
    _cachedSessions?.add(sessionRecord);
    return await sessionRecord.save();
  }

  return false;
}