Server: use preview image for opengraph
[oweals/peertube.git] / server / models / oauth-token.js
1 const mongoose = require('mongoose')
2
3 const logger = require('../helpers/logger')
4
5 // ---------------------------------------------------------------------------
6
7 const OAuthTokenSchema = mongoose.Schema({
8   accessToken: String,
9   accessTokenExpiresAt: Date,
10   client: { type: mongoose.Schema.Types.ObjectId, ref: 'OAuthClient' },
11   refreshToken: String,
12   refreshTokenExpiresAt: Date,
13   user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
14 })
15
16 OAuthTokenSchema.path('accessToken').required(true)
17 OAuthTokenSchema.path('client').required(true)
18 OAuthTokenSchema.path('user').required(true)
19
20 OAuthTokenSchema.statics = {
21   getByRefreshTokenAndPopulateClient,
22   getByTokenAndPopulateUser,
23   getByRefreshTokenAndPopulateUser,
24   removeByUserId
25 }
26
27 mongoose.model('OAuthToken', OAuthTokenSchema)
28
29 // ---------------------------------------------------------------------------
30
31 function getByRefreshTokenAndPopulateClient (refreshToken) {
32   return this.findOne({ refreshToken: refreshToken }).populate('client').exec().then(function (token) {
33     if (!token) return token
34
35     const tokenInfos = {
36       refreshToken: token.refreshToken,
37       refreshTokenExpiresAt: token.refreshTokenExpiresAt,
38       client: {
39         id: token.client._id.toString()
40       },
41       user: {
42         id: token.user
43       }
44     }
45
46     return tokenInfos
47   }).catch(function (err) {
48     logger.info('getRefreshToken error.', { error: err })
49   })
50 }
51
52 function getByTokenAndPopulateUser (bearerToken) {
53   return this.findOne({ accessToken: bearerToken }).populate('user').exec()
54 }
55
56 function getByRefreshTokenAndPopulateUser (refreshToken) {
57   return this.findOne({ refreshToken: refreshToken }).populate('user').exec()
58 }
59
60 function removeByUserId (userId, callback) {
61   return this.remove({ user: userId }, callback)
62 }