]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/models/users.js
046fe462d15d7638b18a3389604de5d87f716c86
1 const mongoose
= require('mongoose')
3 const logger
= require('../helpers/logger')
5 // ---------------------------------------------------------------------------
7 const oAuthTokensSchema
= mongoose
.Schema({
9 accessTokenExpiresOn: Date
,
10 client: { type: mongoose
.Schema
.Types
.ObjectId
, ref: 'oAuthClients' },
12 refreshTokenExpiresOn: Date
,
13 user: { type: mongoose
.Schema
.Types
.ObjectId
, ref: 'users' }
15 const OAuthTokensDB
= mongoose
.model('oAuthTokens', oAuthTokensSchema
)
17 const oAuthClientsSchema
= mongoose
.Schema({
22 const OAuthClientsDB
= mongoose
.model('oAuthClients', oAuthClientsSchema
)
24 const usersSchema
= mongoose
.Schema({
28 const UsersDB
= mongoose
.model('users', usersSchema
)
30 // ---------------------------------------------------------------------------
33 createClient: createClient
,
34 createUser: createUser
,
35 getAccessToken: getAccessToken
,
37 getClients: getClients
,
38 getRefreshToken: getRefreshToken
,
44 function createClient (secret
, grants
, callback
) {
45 logger
.debug('Creating client.')
47 const mongo_id
= new mongoose
.mongo
.ObjectID()
48 return OAuthClientsDB
.create({ _id: mongo_id
, clientSecret: secret
, grants: grants
}, function (err
) {
49 if (err
) return callback(err
)
51 return callback(null, mongo_id
)
55 function createUser (username
, password
, callback
) {
56 logger
.debug('Creating user.')
58 return UsersDB
.create({ username: username
, password: password
}, callback
)
61 function getAccessToken (bearerToken
, callback
) {
62 logger
.debug('Getting access token (bearerToken: ' + bearerToken
+ ').')
64 return OAuthTokensDB
.findOne({ accessToken: bearerToken
}).populate('user')
67 function getClient (clientId
, clientSecret
) {
68 logger
.debug('Getting Client (clientId: ' + clientId
+ ', clientSecret: ' + clientSecret
+ ').')
71 const mongo_id
= new mongoose
.mongo
.ObjectID(clientId
)
72 return OAuthClientsDB
.findOne({ _id: mongo_id
, clientSecret: clientSecret
})
75 function getClients (callback
) {
76 return OAuthClientsDB
.find(callback
)
79 function getRefreshToken (refreshToken
) {
80 logger
.debug('Getting RefreshToken (refreshToken: ' + refreshToken
+ ').')
82 return OAuthTokensDB
.findOne({ refreshToken: refreshToken
})
85 function getUser (username
, password
) {
86 logger
.debug('Getting User (username: ' + username
+ ', password: ' + password
+ ').')
87 return UsersDB
.findOne({ username: username
, password: password
})
90 function getUsers (callback
) {
91 return UsersDB
.find(callback
)
94 function saveToken (token
, client
, user
) {
95 logger
.debug('Saving token for client ' + client
.id
+ ' and user ' + user
.id
+ '.')
97 const token_to_create
= {
98 accessToken: token
.accessToken
,
99 accessTokenExpiresOn: token
.accessTokenExpiresOn
,
101 refreshToken: token
.refreshToken
,
102 refreshTokenExpiresOn: token
.refreshTokenExpiresOn
,
106 return OAuthTokensDB
.create(token_to_create
, function (err
, token_created
) {
107 if (err
) throw err
// node-oauth2-server library uses Promise.try
109 token_created
.client
= client
110 token_created
.user
= user
116 // ---------------------------------------------------------------------------
118 module
.exports
= Users