16 lines
645 B
Swift
16 lines
645 B
Swift
import Vapor
|
|
|
|
public struct UserSessionAuthenticator<SessionUser: ManagedUser>: AsyncSessionAuthenticator where SessionUser.SessionID == ExpiringUserId {
|
|
public typealias User = SessionUser
|
|
|
|
public func authenticate (sessionID: SessionUser.SessionID, for request: Request) async throws {
|
|
if let user = try await request.db.withSQLConnection ({ connection in
|
|
return try await SessionUser.authenticate (sessionID: sessionID, on: connection)
|
|
}) {
|
|
request.logger.info ("Seeing user \(user)")
|
|
request.auth.login (user)
|
|
request.logger.info ("Saw user \(user)")
|
|
}
|
|
}
|
|
}
|