]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/lib/oauth-model.js
1 const mongoose
= require('mongoose')
3 const logger
= require('../helpers/logger')
5 const OAuthClient
= mongoose
.model('OAuthClient')
6 const OAuthToken
= mongoose
.model('OAuthToken')
7 const User
= mongoose
.model('User')
9 // See https://github.com/oauthjs/node-oauth2-server/wiki/Model-specification for the model specifications
11 getAccessToken: getAccessToken
,
13 getRefreshToken: getRefreshToken
,
18 // ---------------------------------------------------------------------------
20 function getAccessToken (bearerToken
) {
21 logger
.debug('Getting access token (bearerToken: ' + bearerToken
+ ').')
23 return OAuthToken
.loadByTokenAndPopulateUser(bearerToken
)
26 function getClient (clientId
, clientSecret
) {
27 logger
.debug('Getting Client (clientId: ' + clientId
+ ', clientSecret: ' + clientSecret
+ ').')
30 const mongoId
= new mongoose
.mongo
.ObjectID(clientId
)
31 return OAuthClient
.loadByIdAndSecret(mongoId
, clientSecret
)
34 function getRefreshToken (refreshToken
) {
35 logger
.debug('Getting RefreshToken (refreshToken: ' + refreshToken
+ ').')
37 return OAuthToken
.loadByRefreshToken(refreshToken
)
40 function getUser (username
, password
) {
41 logger
.debug('Getting User (username: ' + username
+ ', password: ' + password
+ ').')
43 return User
.loadByUsernameAndPassword(username
, password
)
46 function saveToken (token
, client
, user
) {
47 logger
.debug('Saving token for client ' + client
.id
+ ' and user ' + user
.id
+ '.')
49 const tokenObj
= new OAuthToken({
50 accessToken: token
.accessToken
,
51 accessTokenExpiresOn: token
.accessTokenExpiresOn
,
53 refreshToken: token
.refreshToken
,
54 refreshTokenExpiresOn: token
.refreshTokenExpiresOn
,
58 return tokenObj
.save(function (err
, tokenCreated
) {
59 if (err
) throw err
// node-oauth2-server library uses Promise.try
61 tokenCreated
.client
= client
62 tokenCreated
.user
= user
68 // ---------------------------------------------------------------------------
70 module
.exports
= OAuthModel