Server: videos search case insensitive
[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   getByRefreshToken,
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: token.user
42     }
43
44     return tokenInfos
45   }).catch(function (err) {
46     logger.info('getRefreshToken error.', { error: err })
47   })
48 }
49
50 function getByTokenAndPopulateUser (bearerToken) {
51   return this.findOne({ accessToken: bearerToken }).populate('user').exec()
52 }
53
54 function getByRefreshToken (refreshToken) {
55   return this.findOne({ refreshToken: refreshToken }).exec()
56 }
57
58 function removeByUserId (userId, callback) {
59   return this.remove({ user: userId }, callback)
60 }