logout static method
- 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;
}
}