user static method
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();
// Todo - implement eager-loading and relationships (planned)
// api
// session?.user.email => if there's a session, a user led to it's creation
// user.session?.lastActivity => does this user have an active session?
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;
}