middleware static method

Future middleware(
  1. HttpRequest request,
  2. void next()
)

Implementation

static Future<dynamic> middleware(
  HttpRequest request,
  void Function() next,
) 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 request.redirectToLogin();
  }

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

  if (session == null) return request.redirectToLogin();

  if (!_validateSession(session)) {
    await logout(request);
    return request.redirectToLogin();
  }

  session.lastActivity = DateTime.now();
  return next();
}