-
Notifications
You must be signed in to change notification settings - Fork 63
Expand file tree
/
Copy pathapi.js
More file actions
45 lines (39 loc) · 1.11 KB
/
api.js
File metadata and controls
45 lines (39 loc) · 1.11 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
33
34
35
36
37
38
39
40
41
42
43
44
45
const AV = require('leanengine')
const { Router } = require('express')
const { query } = require('express-validator')
const { requireAuth, catchError, customerServiceOnly, parseSearchingQ } = require('../middleware')
const { encodeUserObject } = require('./utils')
const router = Router().use(requireAuth)
router.get(
'/',
customerServiceOnly,
parseSearchingQ,
query('id').isString().isLength({ min: 1 }),
catchError(async (req, res) => {
const { id } = req.query
const query = new AV.Query('_User')
const ids = id.split(',')
if (ids.length > 1) {
query.containedIn('objectId', ids)
} else {
query.equalTo('objectId', ids[0])
}
const users = await query.find({ useMasterKey: true })
res.json(users.map(encodeUserObject))
})
)
router.param(
'id',
catchError(async (req, res, next, id) => {
if (id === req.user.id) {
req.targetUser = req.user
} else {
req.targetUser = await new AV.Query('_User').get(id, { user: req.user })
}
next()
})
)
router.get('/:id', (req, res) => {
res.json(encodeUserObject(req.targetUser))
})
module.exports = router