diff --git a/src/Controllers/UserCotroller.ts b/src/Controllers/UserCotroller.ts index f2d703fbbae63a1fab8871ebf88717cd4c506e47..7ca98b28e453a0080e61e6a9e7c8a2d1e94dc28f 100644 --- a/src/Controllers/UserCotroller.ts +++ b/src/Controllers/UserCotroller.ts @@ -140,13 +140,24 @@ const login = async (req: Request, res: Response): Promise<Response> => { } }; +const listUsersById = async (req: Request, res: Response): Promise<Response> => { + try { + const { userIds } = req.body; + const users = await UserService.listUsersById(userIds); + return res.status(200).send(users); + } catch (error) { + const e = error as Error; + return res.status(400).json({ error: e.message }); + } +}; + router.route('/login') .post(login); router.route('/') .post(create); -router.use('/', authorized); +// router.use('/', authorized); router.route('/') .get(listUsers); @@ -173,4 +184,7 @@ router.route('/:id/admin') router.route('/:id/client') .put(removeAdminPermission); +router.route('/usersById') + .post(listUsersById); + export default router; diff --git a/src/Services/UserService.ts b/src/Services/UserService.ts index 6663071eb0cc987f38c49bdd05c6645e12372a1b..41bf86b5d3cfc4deb213793a697a291fec38c189 100644 --- a/src/Services/UserService.ts +++ b/src/Services/UserService.ts @@ -1,5 +1,5 @@ import bcrypt from 'bcrypt'; -import { Op } from 'sequelize'; +import { Op, where } from 'sequelize'; import { profiles, status } from '../enums/index.enum'; import Paginator from '../interfaces/paginator.interface'; import { User } from '../models/users.model'; @@ -418,6 +418,13 @@ const login = async (userDTO: UserLoginDTO): Promise<User> => User.findOne({ throw new Error('find user error'); }); +const listUsersById = async (ids: number[]): Promise<User[]> => User.findAll({ + attributes: [ + 'id', 'name', 'email', 'organization', 'type', + ], + where: { id: { [Op.in]: ids } }, +}); + export default { listAll, listPending, @@ -433,4 +440,5 @@ export default { giveAdminPermission, removeAdminPermission, login, + listUsersById, };