]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/controllers/api/users.js
3 const express
= require('express')
4 const waterfall
= require('async/waterfall')
6 const constants
= require('../../initializers/constants')
7 const db
= require('../../initializers/database')
8 const logger
= require('../../helpers/logger')
9 const utils
= require('../../helpers/utils')
10 const middlewares
= require('../../middlewares')
11 const admin
= middlewares
.admin
12 const oAuth
= middlewares
.oauth
13 const pagination
= middlewares
.pagination
14 const sort
= middlewares
.sort
15 const validatorsPagination
= middlewares
.validators
.pagination
16 const validatorsSort
= middlewares
.validators
.sort
17 const validatorsUsers
= middlewares
.validators
.users
19 const router
= express
.Router()
21 router
.get('/me', oAuth
.authenticate
, getUserInformation
)
24 validatorsPagination
.pagination
,
25 validatorsSort
.usersSort
,
27 pagination
.setPagination
,
34 validatorsUsers
.usersAdd
,
40 validatorsUsers
.usersUpdate
,
47 validatorsUsers
.usersRemove
,
51 router
.post('/token', oAuth
.token
, success
)
52 // TODO: Once https://github.com/oauthjs/node-oauth2-server/pull/289 is merged, implement revoke token route
54 // ---------------------------------------------------------------------------
56 module
.exports
= router
58 // ---------------------------------------------------------------------------
60 function createUser (req
, res
, next
) {
61 const user
= db
.User
.build({
62 username: req
.body
.username
,
63 password: req
.body
.password
,
64 email: req
.body
.email
,
65 role: constants
.USER_ROLES
.USER
68 user
.save().asCallback(function (err
, createdUser
) {
69 if (err
) return next(err
)
71 return res
.type('json').status(204).end()
75 function getUserInformation (req
, res
, next
) {
76 db
.User
.loadByUsername(res
.locals
.oauth
.token
.user
.username
, function (err
, user
) {
77 if (err
) return next(err
)
79 return res
.json(user
.toFormatedJSON())
83 function listUsers (req
, res
, next
) {
84 db
.User
.listForApi(req
.query
.start
, req
.query
.count
, req
.query
.sort
, function (err
, usersList
, usersTotal
) {
85 if (err
) return next(err
)
87 res
.json(utils
.getFormatedObjects(usersList
, usersTotal
))
91 function removeUser (req
, res
, next
) {
93 function loadUser (callback
) {
94 db
.User
.loadById(req
.params
.id
, callback
)
97 function deleteUser (user
, callback
) {
98 user
.destroy().asCallback(callback
)
100 ], function andFinally (err
) {
102 logger
.error('Errors when removed the user.', { error: err
})
106 return res
.sendStatus(204)
110 function updateUser (req
, res
, next
) {
111 db
.User
.loadByUsername(res
.locals
.oauth
.token
.user
.username
, function (err
, user
) {
112 if (err
) return next(err
)
114 user
.password
= req
.body
.password
115 user
.save().asCallback(function (err
) {
116 if (err
) return next(err
)
118 return res
.sendStatus(204)
123 function success (req
, res
, next
) {