forked from Sunbird-Obsrv/obsrv-web-console
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathuser_list.ts
More file actions
32 lines (29 loc) · 1.36 KB
/
user_list.ts
File metadata and controls
32 lines (29 loc) · 1.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { NextFunction, Request, Response } from 'express';
import _ from 'lodash';
import userService from '../services/oauthUsers';
import { transform } from '../../shared/utils/transformResponse';
export default {
name: 'user:list',
handler: () => async (request: Request, response: Response, next: NextFunction) => {
try {
const apiId = _.get(request, ['body', 'id']);
const user = _.get(request, ['body', 'request']);
const result = await userService.findAll(user);
const usersList = result.map((user: any) => {
const { password, provider, mobile_number, ...sanitizedUser } = user;
return sanitizedUser;
});
const responseData = { data: usersList, count: _.size(usersList) };
response.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains; preload');
response.status(200).json(transform({ id: apiId, result: responseData }));
} catch (error) {
if (error === 'user_not_found') {
const err = new Error('User not found');
const extendedError = Object.assign(err, { message: error, status: 404, responseCode: 'NOT_FOUND', errorCode: 'NOT_FOUND' });
next(extendedError);
} else {
next(error);
}
}
},
};