mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-21 02:40:14 +01:00
✨ feat: Implement Group Management with Create and Assign Functionality
This commit is contained in:
parent
06282b584f
commit
39649ce523
7 changed files with 167 additions and 0 deletions
62
config/assign-group.js
Normal file
62
config/assign-group.js
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
const path = require('path');
|
||||
require('module-alias')({ base: path.resolve(__dirname, '..', 'api') });
|
||||
const { askQuestion, silentExit } = require('./helpers');
|
||||
const User = require('~/models/User');
|
||||
const Group = require('~/models/Group');
|
||||
const connect = require('./connect');
|
||||
|
||||
(async () => {
|
||||
await connect();
|
||||
|
||||
console.purple('---------------------------------------');
|
||||
console.purple('Assign a Group to a User');
|
||||
console.purple('---------------------------------------');
|
||||
|
||||
// Read arguments from CLI or prompt the user
|
||||
let userEmail = process.argv[2] || (await askQuestion('User email: '));
|
||||
let groupName = process.argv[3] || (await askQuestion('Group name to assign: '));
|
||||
|
||||
// Validate email format
|
||||
if (!userEmail.includes('@')) {
|
||||
console.red('Error: Invalid email address!');
|
||||
silentExit(1);
|
||||
}
|
||||
|
||||
// Find the group by name
|
||||
const group = await Group.findOne({ name: groupName });
|
||||
if (!group) {
|
||||
console.red('Error: No group with that name was found!');
|
||||
silentExit(1);
|
||||
}
|
||||
|
||||
// Find the user by email
|
||||
const user = await User.findOne({ email: userEmail });
|
||||
if (!user) {
|
||||
console.red('Error: No user with that email was found!');
|
||||
silentExit(1);
|
||||
}
|
||||
console.purple(`Found user: ${user.email}`);
|
||||
|
||||
// Assign the group to the user if not already assigned
|
||||
try {
|
||||
if (!user.groups) {
|
||||
user.groups = [];
|
||||
}
|
||||
if (!user.groups.includes(group._id)) {
|
||||
user.groups.push(group._id);
|
||||
await user.save();
|
||||
}
|
||||
} catch (error) {
|
||||
console.red('Error assigning group to user: ' + error.message);
|
||||
silentExit(1);
|
||||
}
|
||||
|
||||
console.green(`User ${user.email} successfully assigned to group ${group.name}!`);
|
||||
silentExit(0);
|
||||
})();
|
||||
|
||||
process.on('uncaughtException', (err) => {
|
||||
console.error('There was an uncaught error:');
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue