]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/models/users.js
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 getFirstClient: getFirstClient
,
39 getRefreshToken: getRefreshToken
,
45 function createClient (secret
, grants
, callback
) {
46 logger
.debug('Creating client.')
48 const mongo_id
= new mongoose
.mongo
.ObjectID()
49 return OAuthClientsDB
.create({ _id: mongo_id
, clientSecret: secret
, grants: grants
}, function (err
) {
50 if (err
) return callback(err
)
52 return callback(null, mongo_id
)
56 function createUser (username
, password
, callback
) {
57 logger
.debug('Creating user.')
59 return UsersDB
.create({ username: username
, password: password
}, callback
)
62 function getAccessToken (bearerToken
, callback
) {
63 logger
.debug('Getting access token (bearerToken: ' + bearerToken
+ ').')
65 return OAuthTokensDB
.findOne({ accessToken: bearerToken
}).populate('user')
68 function getFirstClient (callback
) {
69 return OAuthClientsDB
.findOne({}, callback
)
72 function getClient (clientId
, clientSecret
) {
73 logger
.debug('Getting Client (clientId: ' + clientId
+ ', clientSecret: ' + clientSecret
+ ').')
76 const mongo_id
= new mongoose
.mongo
.ObjectID(clientId
)
77 return OAuthClientsDB
.findOne({ _id: mongo_id
, clientSecret: clientSecret
})
80 function getClients (callback
) {
81 return OAuthClientsDB
.find(callback
)
84 function getRefreshToken (refreshToken
) {
85 logger
.debug('Getting RefreshToken (refreshToken: ' + refreshToken
+ ').')
87 return OAuthTokensDB
.findOne({ refreshToken: refreshToken
})
90 function getUser (username
, password
) {
91 logger
.debug('Getting User (username: ' + username
+ ', password: ' + password
+ ').')
92 return UsersDB
.findOne({ username: username
, password: password
})
95 function getUsers (callback
) {
96 return UsersDB
.find(callback
)
99 function saveToken (token
, client
, user
) {
100 logger
.debug('Saving token for client ' + client
.id
+ ' and user ' + user
.id
+ '.')
102 const token_to_create
= {
103 accessToken: token
.accessToken
,
104 accessTokenExpiresOn: token
.accessTokenExpiresOn
,
106 refreshToken: token
.refreshToken
,
107 refreshTokenExpiresOn: token
.refreshTokenExpiresOn
,
111 return OAuthTokensDB
.create(token_to_create
, function (err
, token_created
) {
112 if (err
) throw err
// node-oauth2-server library uses Promise.try
114 token_created
.client
= client
115 token_created
.user
= user
121 // ---------------------------------------------------------------------------
123 module
.exports
= Users