]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/lib/oauth-model.js
1 const db
= require('../initializers/database')
2 const logger
= require('../helpers/logger')
4 // See https://github.com/oauthjs/node-oauth2-server/wiki/Model-specification for the model specifications
14 // ---------------------------------------------------------------------------
16 function getAccessToken (bearerToken
) {
17 logger
.debug('Getting access token (bearerToken: ' + bearerToken
+ ').')
19 return db
.OAuthToken
.getByTokenAndPopulateUser(bearerToken
)
22 function getClient (clientId
, clientSecret
) {
23 logger
.debug('Getting Client (clientId: ' + clientId
+ ', clientSecret: ' + clientSecret
+ ').')
25 return db
.OAuthClient
.getByIdAndSecret(clientId
, clientSecret
)
28 function getRefreshToken (refreshToken
) {
29 logger
.debug('Getting RefreshToken (refreshToken: ' + refreshToken
+ ').')
31 return db
.OAuthToken
.getByRefreshTokenAndPopulateClient(refreshToken
)
34 function getUser (username
, password
) {
35 logger
.debug('Getting User (username: ' + username
+ ', password: ' + password
+ ').')
37 return db
.User
.getByUsername(username
).then(function (user
) {
38 if (!user
) return null
40 // We need to return a promise
41 return new Promise(function (resolve
, reject
) {
42 return user
.isPasswordMatch(password
, function (err
, isPasswordMatch
) {
43 if (err
) return reject(err
)
45 if (isPasswordMatch
=== true) {
55 function revokeToken (token
) {
56 return db
.OAuthToken
.getByRefreshTokenAndPopulateUser(token
.refreshToken
).then(function (tokenDB
) {
57 if (tokenDB
) tokenDB
.destroy()
60 * Thanks to https://github.com/manjeshpv/node-oauth2-server-implementation/blob/master/components/oauth/mongo-models.js
61 * "As per the discussion we need set older date
62 * revokeToken will expected return a boolean in future version
63 * https://github.com/oauthjs/node-oauth2-server/pull/274
64 * https://github.com/oauthjs/node-oauth2-server/issues/290"
66 const expiredToken
= tokenDB
67 expiredToken
.refreshTokenExpiresAt
= new Date('2015-05-28T06:59:53.000Z')
73 function saveToken (token
, client
, user
) {
74 logger
.debug('Saving token ' + token
.accessToken
+ ' for client ' + client
.id
+ ' and user ' + user
.id
+ '.')
76 const tokenToCreate
= {
77 accessToken: token
.accessToken
,
78 accessTokenExpiresAt: token
.accessTokenExpiresAt
,
79 refreshToken: token
.refreshToken
,
80 refreshTokenExpiresAt: token
.refreshTokenExpiresAt
,
81 oAuthClientId: client
.id
,
85 return db
.OAuthToken
.create(tokenToCreate
).then(function (tokenCreated
) {
86 tokenCreated
.client
= client
87 tokenCreated
.user
= user
90 }).catch(function (err
) {
95 // ---------------------------------------------------------------------------
97 module
.exports
= OAuthModel