NestedReadAllAuthModifier
public final class NestedReadAllAuthModifier<
A: AuthEndpoint,
I: CorvusModel,
U: CorvusModelAuthenticatable>:
ReadEndpoint
A class that wraps a component which utilizes an .auth() modifier. Differs
from AuthModifier by authenticating on the user of an intermediate parent
I of A.QuerySubject. Requires an object U that represents the user to
authorize.
-
The return value of the
.query(), so the type being operated on in the current component.Declaration
Swift
public typealias QuerySubject = A.QuerySubject -
The
KeyPathto the user property of the intermediateIwhich is to be authenticated.Declaration
Swift
public typealias UserKeyPath = KeyPath< I, I.Parent<U> > -
The
KeyPathto the intermediateIof the endpoint’sQuerySubject.Declaration
Swift
public typealias IntermediateKeyPath = KeyPath< A.QuerySubject, A.QuerySubject.Parent<I> > -
The
AuthEndpointthe.auth()modifier is attached to.Declaration
Swift
public let modifiedEndpoint: A -
The path to the property to authenticate for.
Declaration
Swift
public let userKeyPath: UserKeyPath -
The path to the intermediate.
Declaration
Swift
public let intermediateKeyPath: IntermediateKeyPath -
Initializes the modifier with its underlying
QueryEndpointand itsauthpath, which is the keypath to the property to run authentication for.Declaration
Swift
public init( _ authEndpoint: A, intermediate: IntermediateKeyPath, user: UserKeyPath )Parameters
queryEndpointThe
QueryEndpointwhich the modifer is attached to.intermediateA
KeyPathto the intermediate.userA
KeyPathwhich leads to the property to authenticate for.operationTypeThe HTTP method of the wrapped component.
-
Returns the
queryEndpoint‘s query.Throws
AnAborterror if the item is not found.Declaration
Swift
public func query(_ req: Request) throws -> QueryBuilder<QuerySubject>Parameters
reqAn incoming
Request.Return Value
A
QueryBuilder, which represents aFluentquery defined by thequeryEndpoint. -
A method which checks if the user
Usupplied in theRequestis equal to the user belonging to the particularQuerySubject.Throws
AnAborterror if an item is not found.Declaration
Swift
public func handler(_ req: Request) throws -> EventLoopFuture<[QuerySubject]>Parameters
reqAn incoming
Request.Return Value
An
EventLoopFuturecontaining an eagerloaded value as defined byElement. If authentication fails or a user is not found, HTTP.unauthorizedand.notFoundare thrown respectively.
NestedReadAllAuthModifier Class Reference