]>
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()
26 router
.get('/me/videos/:videoId/rating',
28 validatorsUsers
.usersVideoRating
,
33 validatorsPagination
.pagination
,
34 validatorsSort
.usersSort
,
36 pagination
.setPagination
,
43 validatorsUsers
.usersAdd
,
49 validatorsUsers
.usersUpdate
,
56 validatorsUsers
.usersRemove
,
60 router
.post('/token', oAuth
.token
, success
)
61 // TODO: Once https://github.com/oauthjs/node-oauth2-server/pull/289 is merged, implement revoke token route
63 // ---------------------------------------------------------------------------
65 module
.exports
= router
67 // ---------------------------------------------------------------------------
69 function createUser (req
, res
, next
) {
70 const user
= db
.User
.build({
71 username: req
.body
.username
,
72 password: req
.body
.password
,
73 email: req
.body
.email
,
74 role: constants
.USER_ROLES
.USER
77 user
.save().asCallback(function (err
, createdUser
) {
78 if (err
) return next(err
)
80 return res
.type('json').status(204).end()
84 function getUserInformation (req
, res
, next
) {
85 db
.User
.loadByUsername(res
.locals
.oauth
.token
.user
.username
, function (err
, user
) {
86 if (err
) return next(err
)
88 return res
.json(user
.toFormatedJSON())
92 function getUserVideoRating (req
, res
, next
) {
93 const videoId
= req
.params
.videoId
94 const userId
= res
.locals
.oauth
.token
.User
.id
96 db
.UserVideoRate
.load(userId
, videoId
, function (err
, ratingObj
) {
97 if (err
) return next(err
)
99 const rating
= ratingObj
? ratingObj
.type : 'none'
108 function listUsers (req
, res
, next
) {
109 db
.User
.listForApi(req
.query
.start
, req
.query
.count
, req
.query
.sort
, function (err
, usersList
, usersTotal
) {
110 if (err
) return next(err
)
112 res
.json(utils
.getFormatedObjects(usersList
, usersTotal
))
116 function removeUser (req
, res
, next
) {
118 function loadUser (callback
) {
119 db
.User
.loadById(req
.params
.id
, callback
)
122 function deleteUser (user
, callback
) {
123 user
.destroy().asCallback(callback
)
125 ], function andFinally (err
) {
127 logger
.error('Errors when removed the user.', { error: err
})
131 return res
.sendStatus(204)
135 function updateUser (req
, res
, next
) {
136 db
.User
.loadByUsername(res
.locals
.oauth
.token
.user
.username
, function (err
, user
) {
137 if (err
) return next(err
)
139 user
.password
= req
.body
.password
140 user
.save().asCallback(function (err
) {
141 if (err
) return next(err
)
143 return res
.sendStatus(204)
148 function success (req
, res
, next
) {