]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/controllers/api/v1/users.js
3 const each
= require('async/each')
4 const express
= require('express')
5 const mongoose
= require('mongoose')
6 const waterfall
= require('async/waterfall')
8 const constants
= require('../../../initializers/constants')
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 User
= mongoose
.model('User')
21 const Video
= mongoose
.model('Video')
23 const router
= express
.Router()
25 router
.get('/me', oAuth
.authenticate
, getUserInformation
)
28 validatorsPagination
.pagination
,
29 validatorsSort
.usersSort
,
31 pagination
.setPagination
,
38 validatorsUsers
.usersAdd
,
44 validatorsUsers
.usersUpdate
,
51 validatorsUsers
.usersRemove
,
55 router
.post('/token', oAuth
.token
, success
)
56 // TODO: Once https://github.com/oauthjs/node-oauth2-server/pull/289 is merged, implement revoke token route
58 // ---------------------------------------------------------------------------
60 module
.exports
= router
62 // ---------------------------------------------------------------------------
64 function createUser (req
, res
, next
) {
65 const user
= new User({
66 username: req
.body
.username
,
67 password: req
.body
.password
,
68 role: constants
.USER_ROLES
.USER
71 user
.save(function (err
, createdUser
) {
72 if (err
) return next(err
)
74 return res
.type('json').status(204).end()
78 function getUserInformation (req
, res
, next
) {
79 User
.loadByUsername(res
.locals
.oauth
.token
.user
.username
, function (err
, user
) {
80 if (err
) return next(err
)
82 return res
.json(user
.toFormatedJSON())
86 function listUsers (req
, res
, next
) {
87 User
.listForApi(req
.query
.start
, req
.query
.count
, req
.query
.sort
, function (err
, usersList
, usersTotal
) {
88 if (err
) return next(err
)
90 res
.json(getFormatedUsers(usersList
, usersTotal
))
94 function removeUser (req
, res
, next
) {
96 function getUser (callback
) {
97 User
.loadById(req
.params
.id
, callback
)
100 function getVideos (user
, callback
) {
101 Video
.listOwnedByAuthor(user
.username
, function (err
, videos
) {
102 return callback(err
, user
, videos
)
106 function removeVideosFromDB (user
, videos
, callback
) {
107 each(videos
, function (video
, callbackEach
) {
108 video
.remove(callbackEach
)
110 return callback(err
, user
, videos
)
114 function sendInformationToFriends (user
, videos
, callback
) {
115 videos
.forEach(function (video
) {
118 magnetUri: video
.magnetUri
121 friends
.removeVideoToFriends(params
)
124 return callback(null, user
)
127 function removeUserFromDB (user
, callback
) {
128 user
.remove(callback
)
130 ], function andFinally (err
) {
132 logger
.error('Errors when removed the user.', { error: err
})
136 return res
.sendStatus(204)
140 function updateUser (req
, res
, next
) {
141 User
.loadByUsername(res
.locals
.oauth
.token
.user
.username
, function (err
, user
) {
142 if (err
) return next(err
)
144 user
.password
= req
.body
.password
145 user
.save(function (err
) {
146 if (err
) return next(err
)
148 return res
.sendStatus(204)
153 function success (req
, res
, next
) {
157 // ---------------------------------------------------------------------------
159 function getFormatedUsers (users
, usersTotal
) {
160 const formatedUsers
= []
162 users
.forEach(function (user
) {
163 formatedUsers
.push(user
.toFormatedJSON())