]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/models/oauth-token.js
Server: do not forget to check the signature when another pod wants to
[github/Chocobozzz/PeerTube.git] / server / models / oauth-token.js
CommitLineData
69b0a27c
C
1const mongoose = require('mongoose')
2
2f372a86
C
3const logger = require('../helpers/logger')
4
69b0a27c
C
5// ---------------------------------------------------------------------------
6
7const OAuthTokenSchema = mongoose.Schema({
8 accessToken: String,
2f372a86 9 accessTokenExpiresAt: Date,
69b0a27c
C
10 client: { type: mongoose.Schema.Types.ObjectId, ref: 'OAuthClient' },
11 refreshToken: String,
2f372a86 12 refreshTokenExpiresAt: Date,
69b0a27c
C
13 user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
14})
15
16OAuthTokenSchema.path('accessToken').required(true)
17OAuthTokenSchema.path('client').required(true)
18OAuthTokenSchema.path('user').required(true)
19
20OAuthTokenSchema.statics = {
2f372a86
C
21 getByRefreshTokenAndPopulateClient: getByRefreshTokenAndPopulateClient,
22 getByTokenAndPopulateUser: getByTokenAndPopulateUser,
23 getByRefreshToken: getByRefreshToken
69b0a27c
C
24}
25
26mongoose.model('OAuthToken', OAuthTokenSchema)
27
28// ---------------------------------------------------------------------------
29
2f372a86 30function getByRefreshTokenAndPopulateClient (refreshToken) {
32bb4156 31 return this.findOne({ refreshToken: refreshToken }).populate('client').exec().then(function (token) {
2f372a86
C
32 if (!token) return token
33
34 const tokenInfos = {
35 refreshToken: token.refreshToken,
36 refreshTokenExpiresAt: token.refreshTokenExpiresAt,
37 client: {
38 id: token.client._id.toString()
39 },
40 user: token.user
41 }
42
43 return tokenInfos
44 }).catch(function (err) {
45 logger.info('getRefreshToken error.', { error: err })
46 })
69b0a27c
C
47}
48
2f372a86 49function getByTokenAndPopulateUser (bearerToken) {
32bb4156 50 return this.findOne({ accessToken: bearerToken }).populate('user').exec()
69b0a27c 51}
2f372a86
C
52
53function getByRefreshToken (refreshToken) {
32bb4156 54 return this.findOne({ refreshToken: refreshToken }).exec()
2f372a86 55}