| 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 }); |
| await Session.deleteMany({ user: user.id }); |
| await Transaction.deleteMany({ user: user.id }); |
| await deleteUserKey({ userId: user.id, all: true }); |
| await Balance.deleteMany({ user: user._id }); |
| await deletePresets(user.id); |
| |
| await deleteConvos(user.id); |
| await deleteUserPluginAuth(user.id, null, true); |
| await deleteUserById(user.id); |
| await deleteAllSharedLinks(user.id); |
| await deleteUserFiles(req); |
| await deleteFiles(null, user.id); |
| |
| 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, |
| }; |
|
|