nodejsamazingenerator
Version:
118 lines (106 loc) • 3.04 kB
JavaScript
/* 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