]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/controllers/api/users.js
3 const each
= require('async/each')
4 const express
= require('express')
5 const waterfall
= require('async/waterfall')
7 const constants
= require('../../initializers/constants')
8 const db
= require('../../initializers/database')
9 const friends
= require('../../lib/friends')
10 const logger
= require('../../helpers/logger')
11 const middlewares
= require('../../middlewares')
12 const admin
= middlewares
.admin
13 const oAuth
= middlewares
.oauth
14 const pagination
= middlewares
.pagination
15 const sort
= middlewares
.sort
16 const validatorsPagination
= middlewares
.validators
.pagination
17 const validatorsSort
= middlewares
.validators
.sort
18 const validatorsUsers
= middlewares
.validators
.users
20 const router
= express
.Router()
22 router
.get('/me', oAuth
.authenticate
, getUserInformation
)
25 validatorsPagination
.pagination
,
26 validatorsSort
.usersSort
,
28 pagination
.setPagination
,
35 validatorsUsers
.usersAdd
,
41 validatorsUsers
.usersUpdate
,
48 validatorsUsers
.usersRemove
,
52 router
.post('/token', oAuth
.token
, success
)
53 // TODO: Once https://github.com/oauthjs/node-oauth2-server/pull/289 is merged, implement revoke token route
55 // ---------------------------------------------------------------------------
57 module
.exports
= router
59 // ---------------------------------------------------------------------------
61 function createUser (req
, res
, next
) {
62 const user
= db
.User
.build({
63 username: req
.body
.username
,
64 password: req
.body
.password
,
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(getFormatedUsers(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
) {
127 // ---------------------------------------------------------------------------
129 function getFormatedUsers (users
, usersTotal
) {
130 const formatedUsers
= []
132 users
.forEach(function (user
) {
133 formatedUsers
.push(user
.toFormatedJSON())