🔐 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,56 @@
import { Schema } from 'mongoose';
import type { IGroup } from '~/types';
const groupSchema = new Schema<IGroup>(
{
name: {
type: String,
required: true,
index: true,
},
description: {
type: String,
required: false,
},
email: {
type: String,
required: false,
index: true,
},
avatar: {
type: String,
required: false,
},
memberIds: [
{
type: String,
},
],
source: {
type: String,
enum: ['local', 'entra'],
default: 'local',
},
/** External ID (e.g., Entra ID) */
idOnTheSource: {
type: String,
sparse: true,
index: true,
required: function (this: IGroup) {
return this.source !== 'local';
},
},
},
{ timestamps: true },
);
groupSchema.index(
{ idOnTheSource: 1, source: 1 },
{
unique: true,
partialFilterExpression: { idOnTheSource: { $exists: true } },
},
);
groupSchema.index({ memberIds: 1 });
export default groupSchema;