vzakharchenko/keycloak-api-gateway

View on GitHub
src/handlers/PublicUrlPageHandler.ts

Summary

Maintainability
A
0 mins
Test Coverage
import {
    AccessLevel,
    RequestObject,
    ResponseObject,
} from "../index";

import {BehaviorContext, CustomPageHandlerContext, PageHandler} from "./PageHandler";

/**
 * Public Page Handler
 */
export class PublicUrlPageHandler implements PageHandler {

  readonly url: string;
  readonly orderValue: number | undefined;

  constructor(url: string, orderValue?: number | undefined) {
    this.url = url;
    this.orderValue = orderValue;
  }

  order() {
    return this.orderValue || 100;
  }

  getAccessLevel(): AccessLevel {
    return 'public';
  }

  getUrl(): string {
    return this.url;
  }

  behavior(req: RequestObject,
             context: BehaviorContext): Promise<AccessLevel> {
    return Promise.resolve(this.getAccessLevel());
  }

  async execute(req: RequestObject, res: ResponseObject, next: any, context: CustomPageHandlerContext): Promise<void> {
    await next();
  }

}