Skip to content
Snippets Groups Projects
Commit 4455e697 authored by Ramiro's avatar Ramiro
Browse files

Merge develop into feature/faqs

parents 89aaf67d 031bd21b
No related branches found
No related tags found
No related merge requests found
MYSQL_USERNAME=root
MYSQL_PASSWORD=root
MYSQL_DB=repp_users
PORT = 4000
\ No newline at end of file
Source diff could not be displayed: it is too large. Options to address this: view the blob.
......@@ -8,54 +8,31 @@ import { authorized } from '../middlewares/token.middleware';
const router = Router();
const listAll = async (req: Request, res: Response): Promise<Response> => {
const listUsers = async (req: Request, res: Response): Promise<Response> => {
try {
const users: Paginator<User> = await UserService
.listAll(Number(req.query.limit), Number(req.query.offset));
return res.status(200).send(users);
} catch (error) {
const e = error as Error;
return res.status(400).json({ error: e.message });
}
};
const listPending = async (req: Request, res: Response): Promise<Response> => {
try {
const users: Paginator<User> = await UserService
let users: Paginator<User>;
if (req.query.type !== null) {
if (req.query.type === 'pending') {
users = await UserService
.listPending(Number(req.query.limit), Number(req.query.offset), String(req.query.search));
return res.status(200).send(users);
} catch (error) {
const e = error as Error;
return res.status(400).json({ error: e.message });
}
};
const listApproved = async (req: Request, res: Response): Promise<Response> => {
try {
const users: Paginator<User> = await UserService
.listApproved(Number(req.query.limit), Number(req.query.offset), String(req.query.search));
return res.status(200).send(users);
} catch (error) {
const e = error as Error;
return res.status(400).json({ error: e.message });
}
};
const listClients = async (req: Request, res: Response): Promise<Response> => {
try {
const users: Paginator<User> = await UserService
} else if (req.query.type === 'approved') {
users = await UserService
.listApproved(
Number(req.query.limit), Number(req.query.offset), String(req.query.search),
);
} else if (req.query.type === 'clients') {
users = await UserService
.listClients(Number(req.query.limit), Number(req.query.offset), String(req.query.search));
return res.status(200).send(users);
} catch (error) {
const e = error as Error;
return res.status(400).json({ error: e.message });
}
};
const listAdmins = async (req: Request, res: Response): Promise<Response> => {
try {
const users: Paginator<User> = await UserService
} else if (req.query.type === 'admins') {
users = await UserService
.listAdmins(Number(req.query.limit), Number(req.query.offset), String(req.query.search));
} else {
return res.status(400).json({ error: 'Invalid type' });
}
} else {
users = await UserService
.listAll(Number(req.query.limit), Number(req.query.offset));
}
return res.status(200).send(users);
} catch (error) {
const e = error as Error;
......@@ -171,31 +148,49 @@ const checkUser = async (req: any, res: Response): Promise<Response> => {
}
};
const validate = async (req: Request, res: Response): Promise<Response> => {
const { token } = req.body;
if (token) {
jwt.verify(token, secret.auth, (error: Error, decoded: {user: number; role: number}) => {
if (error) {
const message = 'Invalid token';
return res.status(401).send({ message });
}
const userId = decoded.user;
return res.status(200).send({ userId });
});
} else {
return res.status(400).send('auth token not supplied');
}
return res.status(500).send();
};
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.post('/validate', validate);
router.use('/', authorized);
router.route('/check-user')
.post(checkUser);
router.route('/')
.get(listAll);
router.route('/pending')
.get(listPending);
router.route('/approved')
.get(listApproved);
router.route('/clients')
.get(listClients);
router.route('/admins')
.get(listAdmins);
.get(listUsers);
router.route('/:id')
.put(update)
......@@ -219,4 +214,7 @@ router.route('/:id/admin')
router.route('/:id/client')
.put(removeAdminPermission);
router.route('/usersById')
.post(listUsersById);
export default router;
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,16 @@ const login = async (userDTO: UserLoginDTO): Promise<User> => User.findOne({
throw new Error('find user error');
});
const listUsersById = async (ids: number[]): Promise<User[]> => {
const users = User.findAll({
attributes: [
'id', 'name', 'email', 'organization', 'type',
],
where: { id: { [Op.in]: ids } },
});
return users;
};
export default {
listAll,
listPending,
......@@ -433,4 +443,5 @@ export default {
giveAdminPermission,
removeAdminPermission,
login,
listUsersById,
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment