]>
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
)
22 router
.get('/me', oAuth
.authenticate
, getUserInformation
)
27 validatorsUsers
.usersAdd
,
33 validatorsUsers
.usersUpdate
,
40 validatorsUsers
.usersRemove
,
44 router
.post('/token', oAuth
.token
, success
)
45 // TODO: Once https://github.com/oauthjs/node-oauth2-server/pull/289 is merged, implement revoke token route
47 // ---------------------------------------------------------------------------
49 module
.exports
= router
51 // ---------------------------------------------------------------------------
53 function createUser (req
, res
, next
) {
54 const user
= new User({
55 username: req
.body
.username
,
56 password: req
.body
.password
,
57 role: constants
.USER_ROLES
.USER
60 user
.save(function (err
, createdUser
) {
61 if (err
) return next(err
)
63 return res
.type('json').status(204).end()
67 function getUserInformation (req
, res
, next
) {
68 User
.loadByUsername(res
.locals
.oauth
.token
.user
.username
, function (err
, user
) {
69 if (err
) return next(err
)
71 return res
.json(user
.toFormatedJSON())
75 function listUsers (req
, res
, next
) {
76 User
.list(function (err
, usersList
) {
77 if (err
) return next(err
)
79 res
.json(getFormatedUsers(usersList
))
83 function removeUser (req
, res
, next
) {
85 function getUser (callback
) {
86 User
.loadById(req
.params
.id
, callback
)
89 function getVideos (user
, callback
) {
90 Video
.listOwnedByAuthor(user
.username
, function (err
, videos
) {
91 return callback(err
, user
, videos
)
95 function removeVideosFromDB (user
, videos
, callback
) {
96 each(videos
, function (video
, callbackEach
) {
97 video
.remove(callbackEach
)
99 return callback(err
, user
, videos
)
103 function sendInformationToFriends (user
, videos
, callback
) {
104 videos
.forEach(function (video
) {
107 magnetUri: video
.magnetUri
110 friends
.removeVideoToFriends(params
)
113 return callback(null, user
)
116 function removeUserFromDB (user
, callback
) {
117 user
.remove(callback
)
119 ], function andFinally (err
) {
121 logger
.error('Errors when removed the user.', { error: err
})
125 return res
.sendStatus(204)
129 function updateUser (req
, res
, next
) {
130 User
.loadByUsername(res
.locals
.oauth
.token
.user
.username
, function (err
, user
) {
131 if (err
) return next(err
)
133 user
.password
= req
.body
.password
134 user
.save(function (err
) {
135 if (err
) return next(err
)
137 return res
.sendStatus(204)
142 function success (req
, res
, next
) {
146 // ---------------------------------------------------------------------------
148 function getFormatedUsers (users
) {
149 const formatedUsers
= []
151 users
.forEach(function (user
) {
152 formatedUsers
.push(user
.toFormatedJSON())