]>
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 middlewares
= require('../../middlewares')
10 const admin
= middlewares
.admin
11 const oAuth
= middlewares
.oauth
12 const pagination
= middlewares
.pagination
13 const sort
= middlewares
.sort
14 const validatorsPagination
= middlewares
.validators
.pagination
15 const validatorsSort
= middlewares
.validators
.sort
16 const validatorsUsers
= middlewares
.validators
.users
18 const router
= express
.Router()
20 router
.get('/me', oAuth
.authenticate
, getUserInformation
)
23 validatorsPagination
.pagination
,
24 validatorsSort
.usersSort
,
26 pagination
.setPagination
,
33 validatorsUsers
.usersAdd
,
39 validatorsUsers
.usersUpdate
,
46 validatorsUsers
.usersRemove
,
50 router
.post('/token', oAuth
.token
, success
)
51 // TODO: Once https://github.com/oauthjs/node-oauth2-server/pull/289 is merged, implement revoke token route
53 // ---------------------------------------------------------------------------
55 module
.exports
= router
57 // ---------------------------------------------------------------------------
59 function createUser (req
, res
, next
) {
60 const user
= db
.User
.build({
61 username: req
.body
.username
,
62 password: req
.body
.password
,
63 role: constants
.USER_ROLES
.USER
66 user
.save().asCallback(function (err
, createdUser
) {
67 if (err
) return next(err
)
69 return res
.type('json').status(204).end()
73 function getUserInformation (req
, res
, next
) {
74 db
.User
.loadByUsername(res
.locals
.oauth
.token
.user
.username
, function (err
, user
) {
75 if (err
) return next(err
)
77 return res
.json(user
.toFormatedJSON())
81 function listUsers (req
, res
, next
) {
82 db
.User
.listForApi(req
.query
.start
, req
.query
.count
, req
.query
.sort
, function (err
, usersList
, usersTotal
) {
83 if (err
) return next(err
)
85 res
.json(getFormatedUsers(usersList
, usersTotal
))
89 function removeUser (req
, res
, next
) {
91 function loadUser (callback
) {
92 db
.User
.loadById(req
.params
.id
, callback
)
95 function deleteUser (user
, callback
) {
96 user
.destroy().asCallback(callback
)
98 ], function andFinally (err
) {
100 logger
.error('Errors when removed the user.', { error: err
})
104 return res
.sendStatus(204)
108 function updateUser (req
, res
, next
) {
109 db
.User
.loadByUsername(res
.locals
.oauth
.token
.user
.username
, function (err
, user
) {
110 if (err
) return next(err
)
112 user
.password
= req
.body
.password
113 user
.save().asCallback(function (err
) {
114 if (err
) return next(err
)
116 return res
.sendStatus(204)
121 function success (req
, res
, next
) {
125 // ---------------------------------------------------------------------------
127 function getFormatedUsers (users
, usersTotal
) {
128 const formatedUsers
= []
130 users
.forEach(function (user
) {
131 formatedUsers
.push(user
.toFormatedJSON())