logout static method

Future<bool> logout(
  1. HttpRequest request
)

Deletes the matching authentication session and clears guest-session state.

Removes the cookie from request/response collections; it does not emit an expired browser cookie. A missing cookie succeeds, while an unknown token or a failed deletion returns false.

Implementation

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

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

    final containerSession = _checkContainer(cookie.value);

    if (containerSession != null) {
      _cachedSessions?.remove(containerSession);
      request.cookies.remove(cookie);
      request.response.cookies.remove(cookie);
      request.thisSession?.user = null;
      request.thisSession?.data.clear();
      request.thisSession?.errors.clear();
      request.thisSession?.flashMessages.clear();
      return await containerSession.delete();
    }

    final dbSession = await _checkDB(cookie.value);

    if (dbSession != null) {
      request.cookies.remove(cookie);
      request.response.cookies.remove(cookie);
      request.thisSession?.user = null;
      request.thisSession?.data.clear();
      request.thisSession?.errors.clear();
      request.thisSession?.flashMessages.clear();
      return await dbSession.delete();
    }

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