feat(admin): Add global admin functionality: backend admin APIs, model fields and UI integration
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
export * from './loint-reception.admin.js';
|
||||
export * from './loint-reception.apitoken.js';
|
||||
export * from './loint-reception.app.js';
|
||||
export * from './loint-reception.authorization.js';
|
||||
|
||||
@@ -0,0 +1,130 @@
|
||||
import * as plugins from '../loint-reception.plugins.js';
|
||||
import * as data from '../data/index.js';
|
||||
|
||||
/**
|
||||
* Check if the current user is a global admin
|
||||
*/
|
||||
export interface IReq_CheckGlobalAdmin
|
||||
extends plugins.typedRequestInterfaces.implementsTR<
|
||||
plugins.typedRequestInterfaces.ITypedRequest,
|
||||
IReq_CheckGlobalAdmin
|
||||
> {
|
||||
method: 'checkGlobalAdmin';
|
||||
request: {
|
||||
jwt: string;
|
||||
};
|
||||
response: {
|
||||
isGlobalAdmin: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all global apps with statistics (admin only)
|
||||
*/
|
||||
export interface IReq_GetGlobalAppStats
|
||||
extends plugins.typedRequestInterfaces.implementsTR<
|
||||
plugins.typedRequestInterfaces.ITypedRequest,
|
||||
IReq_GetGlobalAppStats
|
||||
> {
|
||||
method: 'getGlobalAppStats';
|
||||
request: {
|
||||
jwt: string;
|
||||
};
|
||||
response: {
|
||||
apps: Array<{
|
||||
app: data.IGlobalApp;
|
||||
connectionCount: number;
|
||||
}>;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new global app (admin only)
|
||||
*/
|
||||
export interface IReq_CreateGlobalApp
|
||||
extends plugins.typedRequestInterfaces.implementsTR<
|
||||
plugins.typedRequestInterfaces.ITypedRequest,
|
||||
IReq_CreateGlobalApp
|
||||
> {
|
||||
method: 'createGlobalApp';
|
||||
request: {
|
||||
jwt: string;
|
||||
name: string;
|
||||
description: string;
|
||||
logoUrl: string;
|
||||
appUrl: string;
|
||||
category: string;
|
||||
redirectUris: string[];
|
||||
allowedScopes: string[];
|
||||
};
|
||||
response: {
|
||||
app: data.IGlobalApp;
|
||||
clientSecret: string; // Only shown once on creation
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Update an existing global app (admin only)
|
||||
*/
|
||||
export interface IReq_UpdateGlobalApp
|
||||
extends plugins.typedRequestInterfaces.implementsTR<
|
||||
plugins.typedRequestInterfaces.ITypedRequest,
|
||||
IReq_UpdateGlobalApp
|
||||
> {
|
||||
method: 'updateGlobalApp';
|
||||
request: {
|
||||
jwt: string;
|
||||
appId: string;
|
||||
updates: {
|
||||
name?: string;
|
||||
description?: string;
|
||||
logoUrl?: string;
|
||||
appUrl?: string;
|
||||
category?: string;
|
||||
isActive?: boolean;
|
||||
redirectUris?: string[];
|
||||
allowedScopes?: string[];
|
||||
};
|
||||
};
|
||||
response: {
|
||||
app: data.IGlobalApp;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a global app (admin only)
|
||||
*/
|
||||
export interface IReq_DeleteGlobalApp
|
||||
extends plugins.typedRequestInterfaces.implementsTR<
|
||||
plugins.typedRequestInterfaces.ITypedRequest,
|
||||
IReq_DeleteGlobalApp
|
||||
> {
|
||||
method: 'deleteGlobalApp';
|
||||
request: {
|
||||
jwt: string;
|
||||
appId: string;
|
||||
};
|
||||
response: {
|
||||
success: boolean;
|
||||
disconnectedOrganizations: number;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Regenerate OAuth credentials for a global app (admin only)
|
||||
*/
|
||||
export interface IReq_RegenerateAppCredentials
|
||||
extends plugins.typedRequestInterfaces.implementsTR<
|
||||
plugins.typedRequestInterfaces.ITypedRequest,
|
||||
IReq_RegenerateAppCredentials
|
||||
> {
|
||||
method: 'regenerateAppCredentials';
|
||||
request: {
|
||||
jwt: string;
|
||||
appId: string;
|
||||
};
|
||||
response: {
|
||||
clientId: string;
|
||||
clientSecret: string; // Only shown once
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user