manageable-users/Sources/ManageableUsers/Authentication/UserSessionAuthenticator.swift

16 lines
643 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)")
}
}
}