mirror of
https://github.com/Permissionless-Software-Foundation/bch-dex.git
synced 2026-09-22 09:11:59 -07:00
111 lines
1.9 KiB
JavaScript
111 lines
1.9 KiB
JavaScript
import Router from 'koa-router'
|
|
import User from '../models/users'
|
|
import config from '../../config/config'
|
|
import jwt from 'jsonwebtoken'
|
|
import { ensureUser } from '../middleware/validators'
|
|
|
|
const router = new Router({ prefix: '/users' })
|
|
|
|
router.get('/',
|
|
ensureUser,
|
|
async (ctx) => {
|
|
const users = await User.find({}, '-password -salt')
|
|
ctx.body = users
|
|
}
|
|
)
|
|
|
|
router.get('/:id',
|
|
ensureUser,
|
|
async (ctx) => {
|
|
try {
|
|
const user = await User.findById(ctx.params.id, '-password -salt')
|
|
if (!user) {
|
|
ctx.throw(404)
|
|
}
|
|
|
|
ctx.body = user
|
|
} catch (err) {
|
|
|
|
if (err === 404 || err.name === 'CastError') {
|
|
ctx.throw(404)
|
|
}
|
|
|
|
ctx.throw(500)
|
|
}
|
|
}
|
|
)
|
|
|
|
router.post('/',
|
|
async (ctx) => {
|
|
const user = new User(ctx.request.body.user)
|
|
try {
|
|
await user.save()
|
|
const token = jwt.sign({ id: user.id }, config.token)
|
|
|
|
const response = user.toJSON()
|
|
|
|
delete response.password
|
|
delete response.salt
|
|
|
|
ctx.body = {
|
|
user: response,
|
|
token
|
|
}
|
|
} catch (err) {
|
|
ctx.throw(422, err)
|
|
}
|
|
}
|
|
)
|
|
|
|
router.put('/:id',
|
|
ensureUser,
|
|
async (ctx) => {
|
|
try {
|
|
const user = await User.findById(ctx.params.id, '-password -salt')
|
|
if (!user) {
|
|
ctx.throw(404)
|
|
}
|
|
|
|
Object.assign(user, ctx.request.body.user)
|
|
|
|
await user.save()
|
|
ctx.body = {
|
|
user
|
|
}
|
|
|
|
} catch (err) {
|
|
|
|
if (err === 404 || err.name === 'CastError') {
|
|
ctx.throw(404)
|
|
}
|
|
|
|
ctx.throw(500)
|
|
}
|
|
}
|
|
)
|
|
|
|
router.delete('/:id',
|
|
ensureUser,
|
|
async (ctx) => {
|
|
try {
|
|
const user = await User.findById(ctx.params.id)
|
|
if (!user) {
|
|
ctx.throw(404)
|
|
}
|
|
|
|
await user.remove()
|
|
|
|
ctx.body = 200
|
|
} catch (err) {
|
|
|
|
if (err === 404 || err.name === 'CastError') {
|
|
ctx.throw(404)
|
|
}
|
|
|
|
ctx.throw(500)
|
|
}
|
|
}
|
|
)
|
|
|
|
export default router
|