mirror of https://github.com/boxyhq/jackson.git
77 lines
2.0 KiB
TypeScript
77 lines
2.0 KiB
TypeScript
import {
|
|
IAdminController,
|
|
Storable,
|
|
SAMLSSORecord,
|
|
OIDCSSORecord,
|
|
SSOTracerInstance,
|
|
Records,
|
|
Trace,
|
|
} from '../typings';
|
|
import { JacksonError } from './error';
|
|
import { transformConnections } from './utils';
|
|
|
|
export class AdminController implements IAdminController {
|
|
private connectionStore: Storable;
|
|
private ssoTracer: SSOTracerInstance;
|
|
|
|
constructor({ connectionStore, ssoTracer }) {
|
|
this.connectionStore = connectionStore;
|
|
this.ssoTracer = ssoTracer;
|
|
}
|
|
|
|
public async getAllConnection(pageOffset?: number, pageLimit?: number, pageToken?: string) {
|
|
const { data: connectionList, pageToken: nextPageToken } = (await this.connectionStore.getAll(
|
|
pageOffset,
|
|
pageLimit,
|
|
pageToken
|
|
)) as Records<SAMLSSORecord | OIDCSSORecord>;
|
|
|
|
if (!connectionList || !connectionList.length) {
|
|
return { data: [] };
|
|
}
|
|
|
|
return { data: transformConnections(connectionList), pageToken: nextPageToken };
|
|
}
|
|
|
|
public async getAllSSOTraces(pageOffset: number, pageLimit: number, pageToken?: string) {
|
|
const { data: traces, pageToken: nextPageToken } = (await this.ssoTracer.getAllTraces(
|
|
pageOffset,
|
|
pageLimit,
|
|
pageToken
|
|
)) as Records<Trace>;
|
|
|
|
if (!traces || !traces.length) {
|
|
return { data: [] };
|
|
}
|
|
|
|
return { data: traces, pageToken: nextPageToken };
|
|
}
|
|
|
|
public async getSSOTraceById(traceId: string) {
|
|
const trace = await this.ssoTracer.getByTraceId(traceId);
|
|
|
|
if (!trace) {
|
|
throw new JacksonError(`Trace with id ${traceId} not found`, 404);
|
|
}
|
|
|
|
return trace;
|
|
}
|
|
|
|
public async getTracesByProduct(
|
|
product: string,
|
|
pageOffset: number,
|
|
pageLimit: number,
|
|
pageToken?: string
|
|
) {
|
|
return await this.ssoTracer.getTracesByProduct({ product, pageOffset, pageLimit, pageToken });
|
|
}
|
|
|
|
public async deleteTracesByProduct(product: string) {
|
|
return await this.ssoTracer.deleteTracesByProduct(product);
|
|
}
|
|
|
|
public async countByProduct(product: string) {
|
|
return await this.ssoTracer.countByProduct(product);
|
|
}
|
|
}
|