import AuthRequestProxy = require("../../portalAuthorization/AuthRequestProxy"); import { IAuthProvider } from "../../typings/IAuthProvider"; import { IClusterClientProvider } from "../../typings/IClusterClientProvider"; import { IClusterClientResponse } from "../../typings/IClusterClient"; import topologyConstants from '../../topologyConstants'; export interface CerberusDeps { authProvider: IAuthProvider; clusterClientProvider: IClusterClientProvider; } export interface CheckAccess { service: string; roles: Array; } export class Cerberus { private _http: AuthRequestProxy; constructor({ clusterClientProvider, authProvider }: CerberusDeps) { const clusterClient = clusterClientProvider.createClusterClient( topologyConstants.cerberus ); this._http = new AuthRequestProxy({ clusterClient, authProvider }); } checkAccess({ service, roles }: CheckAccess) { return this._http.send({ url: "cerberus/v1.0/checkaccess", method: "POST", params: { service }, data: { roles } }); } checkAccessV1_1({ service, roles }: CheckAccess) { return this._http.send({ url: "cerberus/v1.1/checkaccess", method: "POST", params: { service }, data: { roles } }); } checkAccessV1_2({ service, roles }: CheckAccess) { return this._http.send({ url: "cerberus/v1.2/checkaccess", method: "POST", params: { service }, data: { roles } }); } }