🔐 feat: Granular Role-based Permissions + Entra ID Group Discovery (#7804)

This commit is contained in:
Danny Avila 2025-06-23 10:54:25 -04:00
parent 6c9a29b6cf
commit f55cdc9b7f
No known key found for this signature in database
GPG key ID: BF31EEB2C5CA0956
99 changed files with 11321 additions and 621 deletions

View file

@ -0,0 +1,11 @@
import accessRoleSchema from '~/schema/accessRole';
import type * as t from '~/types';
/**
* Creates or returns the AccessRole model using the provided mongoose instance and schema
*/
export function createAccessRoleModel(mongoose: typeof import('mongoose')) {
return (
mongoose.models.AccessRole || mongoose.model<t.IAccessRole>('AccessRole', accessRoleSchema)
);
}

View file

@ -0,0 +1,9 @@
import aclEntrySchema from '~/schema/aclEntry';
import type * as t from '~/types';
/**
* Creates or returns the AclEntry model using the provided mongoose instance and schema
*/
export function createAclEntryModel(mongoose: typeof import('mongoose')) {
return mongoose.models.AclEntry || mongoose.model<t.IAclEntry>('AclEntry', aclEntrySchema);
}

View file

@ -0,0 +1,9 @@
import groupSchema from '~/schema/group';
import type * as t from '~/types';
/**
* Creates or returns the Group model using the provided mongoose instance and schema
*/
export function createGroupModel(mongoose: typeof import('mongoose')) {
return mongoose.models.Group || mongoose.model<t.IGroup>('Group', groupSchema);
}

View file

@ -21,6 +21,9 @@ import { createConversationTagModel } from './conversationTag';
import { createSharedLinkModel } from './sharedLink';
import { createToolCallModel } from './toolCall';
import { createMemoryModel } from './memory';
import { createAccessRoleModel } from './accessRole';
import { createAclEntryModel } from './aclEntry';
import { createGroupModel } from './group';
/**
* Creates all database models for all collections
@ -50,5 +53,8 @@ export function createModels(mongoose: typeof import('mongoose')) {
SharedLink: createSharedLinkModel(mongoose),
ToolCall: createToolCallModel(mongoose),
MemoryEntry: createMemoryModel(mongoose),
AccessRole: createAccessRoleModel(mongoose),
AclEntry: createAclEntryModel(mongoose),
Group: createGroupModel(mongoose),
};
}