]>
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 validatorsUsers
= middlewares
.validators
.users
16 const User
= mongoose
.model('User')
17 const Video
= mongoose
.model('Video')
19 const router
= express
.Router()
21 router
.get('/', listUsers
)
26 validatorsUsers
.usersAdd
,
32 validatorsUsers
.usersUpdate
,
36 router
.delete('/:username',
39 validatorsUsers
.usersRemove
,
43 router
.post('/token', oAuth
.token
, success
)
44 // TODO: Once https://github.com/oauthjs/node-oauth2-server/pull/289 is merged, implement revoke token route
46 // ---------------------------------------------------------------------------
48 module
.exports
= router
50 // ---------------------------------------------------------------------------
52 function createUser (req
, res
, next
) {
53 const user
= new User({
54 username: req
.body
.username
,
55 password: req
.body
.password
,
56 role: constants
.USER_ROLES
.USER
59 user
.save(function (err
, createdUser
) {
60 if (err
) return next(err
)
62 return res
.type('json').status(204).end()
66 function listUsers (req
, res
, next
) {
67 User
.list(function (err
, usersList
) {
68 if (err
) return next(err
)
70 res
.json(getFormatedUsers(usersList
))
74 function removeUser (req
, res
, next
) {
76 function getUser (callback
) {
77 User
.loadByUsername(req
.params
.username
, callback
)
80 function getVideos (user
, callback
) {
81 Video
.listOwnedByAuthor(user
.username
, function (err
, videos
) {
82 return callback(err
, user
, videos
)
86 function removeVideosFromDB (user
, videos
, callback
) {
87 each(videos
, function (video
, callbackEach
) {
88 video
.remove(callbackEach
)
90 return callback(err
, user
, videos
)
94 function sendInformationToFriends (user
, videos
, callback
) {
95 videos
.forEach(function (video
) {
98 magnetUri: video
.magnetUri
101 friends
.removeVideoToFriends(params
)
104 return callback(null, user
)
107 function removeUserFromDB (user
, callback
) {
108 user
.remove(callback
)
110 ], function andFinally (err
) {
112 logger
.error('Errors when removed the user.', { error: err
})
116 return res
.type('json').status(204).end()
120 function updateUser (req
, res
, next
) {
121 User
.loadByUsername(res
.locals
.oauth
.token
.user
.username
, function (err
, user
) {
122 if (err
) return next(err
)
124 user
.password
= req
.body
.password
125 user
.save(function (err
) {
126 if (err
) return next(err
)
128 return res
.json('json').status(204).end()
133 function success (req
, res
, next
) {
137 // ---------------------------------------------------------------------------
139 function getFormatedUsers (users
) {
140 const formatedUsers
= []
142 users
.forEach(function (user
) {
143 formatedUsers
.push(user
.toFormatedJSON())