Expose auth repos in context; create routes commands
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2021-06-17 19:35:31 -05:00
parent 9796a7277e
commit 36b451c32b
14 changed files with 300 additions and 4 deletions

View File

@@ -24,6 +24,10 @@ export class Authentication extends Unit {
this.middleware.registerNamespace('@auth', this.getMiddlewareResolver())
}
/**
* Create the canonical namespace resolver for auth middleware.
* @protected
*/
protected getMiddlewareResolver(): CanonicalResolver<StaticClass<Middleware, Instantiable<Middleware>>> {
return (key: string) => {
return ({

View File

@@ -19,7 +19,7 @@ export abstract class SecurityContext {
constructor(
/** The repository from which to draw users. */
protected readonly repository: AuthenticatableRepository,
public readonly repository: AuthenticatableRepository,
/** The name of this context. */
public readonly name: string,

View File

@@ -14,7 +14,7 @@ export class SessionSecurityContext extends SecurityContext {
constructor(
/** The repository from which to draw users. */
protected readonly repository: AuthenticatableRepository,
public readonly repository: AuthenticatableRepository,
) {
super(repository, 'session')
}

View File

@@ -6,7 +6,7 @@ import {AuthenticatableRepository} from '../types'
import {SessionSecurityContext} from '../contexts/SessionSecurityContext'
import {SecurityContext} from '../SecurityContext'
import {ORMUserRepository} from '../orm/ORMUserRepository'
import {AuthConfig} from '../config'
import {AuthConfig, AuthenticatableRepositories} from '../config'
/**
* Injects a SessionSecurityContext into the request and attempts to
@@ -29,6 +29,7 @@ export class SessionAuthMiddleware extends Middleware {
*/
protected getRepository(): AuthenticatableRepository {
const config: AuthConfig | undefined = this.config.get('auth')
return this.make<AuthenticatableRepository>(config?.repositories?.session ?? ORMUserRepository)
const repo: typeof AuthenticatableRepository = AuthenticatableRepositories[config?.repositories?.session ?? 'orm']
return this.make<AuthenticatableRepository>(repo ?? ORMUserRepository)
}
}