feat: Enhance Group and User Schemas with OpenID Support and Documentation

This commit is contained in:
Ruben Talstra 2025-02-22 11:00:02 +01:00
parent 0cdccb617c
commit 82a1f554b5
No known key found for this signature in database
GPG key ID: 2A5A7174A60F3BEA
3 changed files with 56 additions and 19 deletions

View file

@ -1,6 +1,16 @@
const mongoose = require('mongoose');
const groupSchema = new mongoose.Schema(
/**
* @typedef {Object} MongoGroup
* @property {ObjectId} [_id] - MongoDB Document ID
* @property {string} name - The group's name
* @property {string} [description] - A brief description of the group
* @property {string} [externalId] - External identifier for the group (required for non-local groups)
* @property {string} provider - The provider of the group. Defaults to 'local'. For external groups (e.g., 'openid') the externalId is required.
* @property {Date} [createdAt] - Date when the group was created (added by timestamps)
* @property {Date} [updatedAt] - Date when the group was last updated (added by timestamps)
*/
const groupSchema = mongoose.Schema(
{
name: {
type: String,
@ -10,19 +20,21 @@ const groupSchema = new mongoose.Schema(
description: {
type: String,
},
allowedEndpoints: [
{
type: String,
required: true,
externalId: {
type: String,
unique: true,
required: function () {
return this.provider !== 'local';
},
],
allowedModels: [
{
type: String,
},
],
},
provider: {
type: String,
required: true,
default: 'local',
enum: ['local', 'openid'],
},
},
{ timestamps: true },
);

View file

@ -27,6 +27,7 @@ const { SystemRoles } = require('librechat-data-provider');
* @property {Array} [plugins=[]] - List of plugins used by the user
* @property {Array.<MongoSession>} [refreshToken] - List of sessions with refresh tokens
* @property {Date} [expiresAt] - Optional expiration date of the file
* @property {Array.<ObjectId>} [groups] - List of group IDs the user belongs to (references to the Group model)
* @property {Date} [createdAt] - Date when the user was created (added by timestamps)
* @property {Date} [updatedAt] - Date when the user was last updated (added by timestamps)
*/
@ -143,12 +144,11 @@ const userSchema = mongoose.Schema(
type: Boolean,
default: false,
},
groups: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'Group',
},
],
groups: {
type: [mongoose.Schema.Types.ObjectId],
ref: 'Group',
default: [],
},
},
{ timestamps: true },