Simple Managment webapp [LLM]
This commit is contained in:
51
webapp/src/app/core/models/key-token.model.ts
Normal file
51
webapp/src/app/core/models/key-token.model.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
export interface KeyToken {
|
||||
keytoken_id: string;
|
||||
name: string;
|
||||
timestamp_created: string;
|
||||
timestamp_lastused: string | null;
|
||||
owner_user_id: string;
|
||||
all_channels: boolean;
|
||||
channels: string[];
|
||||
token?: string;
|
||||
permissions: string;
|
||||
messages_sent: number;
|
||||
}
|
||||
|
||||
export interface KeyTokenPreview {
|
||||
keytoken_id: string;
|
||||
name: string;
|
||||
}
|
||||
|
||||
export type TokenPermission = 'A' | 'CR' | 'CS' | 'UR';
|
||||
|
||||
export interface CreateKeyRequest {
|
||||
name: string;
|
||||
permissions: string;
|
||||
all_channels?: boolean;
|
||||
channels?: string[];
|
||||
}
|
||||
|
||||
export interface UpdateKeyRequest {
|
||||
name?: string;
|
||||
permissions?: string;
|
||||
all_channels?: boolean;
|
||||
channels?: string[];
|
||||
}
|
||||
|
||||
export interface KeyListResponse {
|
||||
keys: KeyToken[];
|
||||
}
|
||||
|
||||
export function parsePermissions(permissions: string): TokenPermission[] {
|
||||
if (!permissions) return [];
|
||||
return permissions.split(';').filter(p => p) as TokenPermission[];
|
||||
}
|
||||
|
||||
export function hasPermission(permissions: string, required: TokenPermission): boolean {
|
||||
const perms = parsePermissions(permissions);
|
||||
return perms.includes(required) || perms.includes('A');
|
||||
}
|
||||
|
||||
export function isAdminKey(key: KeyToken): boolean {
|
||||
return hasPermission(key.permissions, 'A');
|
||||
}
|
||||
Reference in New Issue
Block a user