mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-04-03 22:37:20 +02:00
feat: add description field to Role model
- Add description to IRole, CreateRoleRequest, UpdateRoleRequest types - Add description field to Mongoose roleSchema (default: '') - Wire description through createRoleHandler and updateRoleHandler - Include description in listRoles select clause so it appears in list
This commit is contained in:
parent
f947546fea
commit
afda763bcd
4 changed files with 11 additions and 2 deletions
|
|
@ -79,8 +79,9 @@ export function createAdminRolesHandlers(deps: AdminRolesDeps) {
|
|||
|
||||
async function createRoleHandler(req: ServerRequest, res: Response) {
|
||||
try {
|
||||
const { name, permissions } = req.body as {
|
||||
const { name, description, permissions } = req.body as {
|
||||
name?: string;
|
||||
description?: string;
|
||||
permissions?: IRole['permissions'];
|
||||
};
|
||||
if (!name || typeof name !== 'string' || !name.trim()) {
|
||||
|
|
@ -88,6 +89,7 @@ export function createAdminRolesHandlers(deps: AdminRolesDeps) {
|
|||
}
|
||||
const role = await createRoleByName({
|
||||
name: name.trim(),
|
||||
description: description ?? '',
|
||||
permissions: permissions || {},
|
||||
});
|
||||
return res.status(201).json({ role });
|
||||
|
|
@ -113,6 +115,9 @@ export function createAdminRolesHandlers(deps: AdminRolesDeps) {
|
|||
if (body.name !== undefined) {
|
||||
updates.name = body.name;
|
||||
}
|
||||
if (body.description !== undefined) {
|
||||
updates.description = body.description;
|
||||
}
|
||||
|
||||
const role = await updateRoleByName(name, updates);
|
||||
return res.status(200).json({ role });
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ export function createRoleMethods(mongoose: typeof import('mongoose'), deps: Rol
|
|||
*/
|
||||
async function listRoles() {
|
||||
const Role = mongoose.models.Role;
|
||||
return await Role.find({}).select('name permissions').lean();
|
||||
return await Role.find({}).select('name description permissions').lean();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ const rolePermissionsSchema = new Schema(
|
|||
|
||||
const roleSchema: Schema<IRole> = new Schema({
|
||||
name: { type: String, required: true, index: true },
|
||||
description: { type: String, default: '' },
|
||||
permissions: {
|
||||
type: rolePermissionsSchema,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import { CursorPaginationParams } from '~/common';
|
|||
|
||||
export interface IRole extends Document {
|
||||
name: string;
|
||||
description?: string;
|
||||
permissions: {
|
||||
[PermissionTypes.BOOKMARKS]?: {
|
||||
[Permissions.USE]?: boolean;
|
||||
|
|
@ -74,11 +75,13 @@ export type RolePermissionsInput = DeepPartial<RolePermissions>;
|
|||
|
||||
export interface CreateRoleRequest {
|
||||
name: string;
|
||||
description?: string;
|
||||
permissions: RolePermissionsInput;
|
||||
}
|
||||
|
||||
export interface UpdateRoleRequest {
|
||||
name?: string;
|
||||
description?: string;
|
||||
permissions?: RolePermissionsInput;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue