UNPKG

nodejsamazingenerator

Version:

118 lines (106 loc) 3.04 kB
/* eslint-disable camelcase */ import { Router } from 'express' import { middleware as query } from 'querymen' import { middleware as body } from 'bodymen' import { master, token } from '../../services/passport' import { index, show, create, update, destroy, validateUser, findByToken } from './user.controller' import { userDataSchema } from './user.model' const router = new Router() /** * @api {get} /users Retrieve users * @apiName RetrieveUsers * @apiGroup User * @apiPermission admin * @apiParam {String} access_token User access_token. * @apiUse listParams * @apiSuccess {Object[]} users List of users. * @apiError {Object} 400 Some parameters may contain invalid values. * @apiError 401 Admin access only. */ router.get('/', master(), token({ required: true, roles: ['admin'] }), query(), index) /** * @api {get} /users/:id Retrieve user * @apiName RetrieveUser * @apiGroup User * @apiPermission public * @apiSuccess {Object} user User's data. * @apiError 404 User not found. */ router.get('/:id', master(), token({ required: true, roles: ['admin'] }), show) /** * @api {post} /users Create user * @apiName CreateUser * @apiGroup User * @apiPermission master * @apiParam {String} access_token Master access_token. * @apiParam {String} email User's email. * @apiParam {String{6..}} password User's password. * @apiParam {String} [name] User's name. * @apiParam {String} [picture] User's picture. * @apiParam {String=user,admin} [role=user] User's role. * @apiSuccess (Sucess 201) {Object} user User's data. * @apiError {Object} 400 Some parameters may contain invalid values. * @apiError 401 Master access only. * @apiError 409 Email already registered. */ router.post('/', master(), body({ ...userDataSchema, link: { type: String, required: true } }), create) /** * @api {put} /users/:id Update user * @apiName UpdateUser * @apiGroup User * @apiPermission user * @apiParam {String} access_token User access_token. * @apiParam {String} [name] User's name. * @apiParam {String} [picture] User's picture. * @apiSuccess {Object} user User's data. * @apiError {Object} 400 Some parameters may contain invalid values. * @apiError 401 Current user or admin access only. * @apiError 404 User not found. */ router.put('/:id', master(), token({ required: true }), body({ ...userDataSchema }), update) /** * @api {delete} /users/:id Delete user * @apiName DeleteUser * @apiGroup User * @apiPermission admin * @apiParam {String} access_token User access_token. * @apiSuccess (Success 204) 204 No Content. * @apiError 401 Admin access only. * @apiError 404 User not found. */ router.delete('/:id', master(), token({ required: true, roles: ['admin'] }), destroy) router.get('/get_user_by_token/:token', master(), findByToken) router.post('/validateUser', master(), body({ activation_token: userDataSchema.activation_token }), validateUser) export default router