Download api/server/controllers/UserController.js from Zhitomir/chat: direct link, hf CLI and curl.
- Browser
- Download file 4.99 kB
-
https://huggingface.co/spaces/Zhitomir/chat/resolve/main/api/server/controllers/UserController.js
- Command line
-
hf download hf://spaces/Zhitomir/chat/api/server/controllers/UserController.js
-
curl -L -o UserController.js https://huggingface.co/spaces/Zhitomir/chat/resolve/main/api/server/controllers/UserController.js
4.99 kB
| const { | |
| Session, | |
| Balance, | |
| getFiles, | |
| deleteFiles, | |
| deleteConvos, | |
| deletePresets, | |
| deleteMessages, | |
| deleteUserById, | |
| } = require('~/models'); | |
| const { updateUserPluginAuth, deleteUserPluginAuth } = require('~/server/services/PluginService'); | |
| const { updateUserPluginsService, deleteUserKey } = require('~/server/services/UserService'); | |
| const { verifyEmail, resendVerificationEmail } = require('~/server/services/AuthService'); | |
| const { processDeleteRequest } = require('~/server/services/Files/process'); | |
| const { deleteAllSharedLinks } = require('~/models/Share'); | |
| const { Transaction } = require('~/models/Transaction'); | |
| const { logger } = require('~/config'); | |
| const getUserController = async (req, res) => { | |
| res.status(200).send(req.user); | |
| }; | |
| const deleteUserFiles = async (req) => { | |
| try { | |
| const userFiles = await getFiles({ user: req.user.id }); | |
| await processDeleteRequest({ | |
| req, | |
| files: userFiles, | |
| }); | |
| } catch (error) { | |
| logger.error('[deleteUserFiles]', error); | |
| } | |
| }; | |
| const updateUserPluginsController = async (req, res) => { | |
| const { user } = req; | |
| const { pluginKey, action, auth, isAssistantTool } = req.body; | |
| let authService; | |
| try { | |
| if (!isAssistantTool) { | |
| const userPluginsService = await updateUserPluginsService(user, pluginKey, action); | |
| if (userPluginsService instanceof Error) { | |
| logger.error('[userPluginsService]', userPluginsService); | |
| const { status, message } = userPluginsService; | |
| res.status(status).send({ message }); | |
| } | |
| } | |
| if (auth) { | |
| const keys = Object.keys(auth); | |
| const values = Object.values(auth); | |
| if (action === 'install' && keys.length > 0) { | |
| for (let i = 0; i < keys.length; i++) { | |
| authService = await updateUserPluginAuth(user.id, keys[i], pluginKey, values[i]); | |
| if (authService instanceof Error) { | |
| logger.error('[authService]', authService); | |
| const { status, message } = authService; | |
| res.status(status).send({ message }); | |
| } | |
| } | |
| } | |
| if (action === 'uninstall' && keys.length > 0) { | |
| for (let i = 0; i < keys.length; i++) { | |
| authService = await deleteUserPluginAuth(user.id, keys[i]); | |
| if (authService instanceof Error) { | |
| logger.error('[authService]', authService); | |
| const { status, message } = authService; | |
| res.status(status).send({ message }); | |
| } | |
| } | |
| } | |
| } | |
| res.status(200).send(); | |
| } catch (err) { | |
| logger.error('[updateUserPluginsController]', err); | |
| return res.status(500).json({ message: 'Something went wrong.' }); | |
| } | |
| }; | |
| const deleteUserController = async (req, res) => { | |
| const { user } = req; | |
| try { | |
| await deleteMessages({ user: user.id }); // delete user messages | |
| await Session.deleteMany({ user: user.id }); // delete user sessions | |
| await Transaction.deleteMany({ user: user.id }); // delete user transactions | |
| await deleteUserKey({ userId: user.id, all: true }); // delete user keys | |
| await Balance.deleteMany({ user: user._id }); // delete user balances | |
| await deletePresets(user.id); // delete user presets | |
| /* TODO: Delete Assistant Threads */ | |
| await deleteConvos(user.id); // delete user convos | |
| await deleteUserPluginAuth(user.id, null, true); // delete user plugin auth | |
| await deleteUserById(user.id); // delete user | |
| await deleteAllSharedLinks(user.id); // delete user shared links | |
| await deleteUserFiles(req); // delete user files | |
| await deleteFiles(null, user.id); // delete database files in case of orphaned files from previous steps | |
| /* TODO: queue job for cleaning actions and assistants of non-existant users */ | |
| logger.info(`User deleted account. Email: ${user.email} ID: ${user.id}`); | |
| res.status(200).send({ message: 'User deleted' }); | |
| } catch (err) { | |
| logger.error('[deleteUserController]', err); | |
| return res.status(500).json({ message: 'Something went wrong.' }); | |
| } | |
| }; | |
| const verifyEmailController = async (req, res) => { | |
| try { | |
| const verifyEmailService = await verifyEmail(req); | |
| if (verifyEmailService instanceof Error) { | |
| return res.status(400).json(verifyEmailService); | |
| } else { | |
| return res.status(200).json(verifyEmailService); | |
| } | |
| } catch (e) { | |
| logger.error('[verifyEmailController]', e); | |
| return res.status(500).json({ message: 'Something went wrong.' }); | |
| } | |
| }; | |
| const resendVerificationController = async (req, res) => { | |
| try { | |
| const result = await resendVerificationEmail(req); | |
| if (result instanceof Error) { | |
| return res.status(400).json(result); | |
| } else { | |
| return res.status(200).json(result); | |
| } | |
| } catch (e) { | |
| logger.error('[verifyEmailController]', e); | |
| return res.status(500).json({ message: 'Something went wrong.' }); | |
| } | |
| }; | |
| module.exports = { | |
| getUserController, | |
| deleteUserController, | |
| verifyEmailController, | |
| updateUserPluginsController, | |
| resendVerificationController, | |
| }; | |