LibreChat/config/assign-group.js

62 lines
1.8 KiB
JavaScript
Raw Normal View History

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);
});