]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/models/oauth-token.js
Update migrations code
[github/Chocobozzz/PeerTube.git] / server / models / oauth-token.js
CommitLineData
2f372a86
C
1const logger = require('../helpers/logger')
2
69b0a27c
C
3// ---------------------------------------------------------------------------
4
feb4bdfd
C
5module.exports = function (sequelize, DataTypes) {
6 const OAuthToken = sequelize.define('OAuthToken',
7 {
8 accessToken: {
9 type: DataTypes.STRING
10 },
11 accessTokenExpiresAt: {
12 type: DataTypes.DATE
13 },
14 refreshToken: {
15 type: DataTypes.STRING
16 },
17 refreshTokenExpiresAt: {
18 type: DataTypes.DATE
19 }
20 },
21 {
22 classMethods: {
23 associate,
24
25 getByRefreshTokenAndPopulateClient,
26 getByTokenAndPopulateUser,
27 getByRefreshTokenAndPopulateUser,
28 removeByUserId
29 }
30 }
31 )
32
33 return OAuthToken
69b0a27c
C
34}
35
feb4bdfd
C
36// TODO: validation
37// OAuthTokenSchema.path('accessToken').required(true)
38// OAuthTokenSchema.path('client').required(true)
39// OAuthTokenSchema.path('user').required(true)
69b0a27c
C
40
41// ---------------------------------------------------------------------------
42
feb4bdfd
C
43function associate (models) {
44 this.belongsTo(models.User, {
45 foreignKey: {
46 name: 'userId',
47 allowNull: false
48 },
49 onDelete: 'cascade'
50 })
51}
52
2f372a86 53function getByRefreshTokenAndPopulateClient (refreshToken) {
feb4bdfd
C
54 const query = {
55 where: {
56 refreshToken: refreshToken
57 },
58 include: [ this.associations.OAuthClient ]
59 }
60
61 return this.findOne(query).then(function (token) {
2f372a86
C
62 if (!token) return token
63
64 const tokenInfos = {
65 refreshToken: token.refreshToken,
66 refreshTokenExpiresAt: token.refreshTokenExpiresAt,
67 client: {
feb4bdfd 68 id: token.client.id
2f372a86 69 },
371fa093
C
70 user: {
71 id: token.user
72 }
2f372a86
C
73 }
74
75 return tokenInfos
76 }).catch(function (err) {
77 logger.info('getRefreshToken error.', { error: err })
78 })
69b0a27c
C
79}
80
2f372a86 81function getByTokenAndPopulateUser (bearerToken) {
feb4bdfd
C
82 const query = {
83 where: {
84 accessToken: bearerToken
85 },
86 include: [ this.sequelize.models.User ]
87 }
88
89 return this.findOne(query).then(function (token) {
90 if (token) token.user = token.User
91
92 return token
93 })
69b0a27c 94}
2f372a86 95
bf2fc85c 96function getByRefreshTokenAndPopulateUser (refreshToken) {
feb4bdfd
C
97 const query = {
98 where: {
99 refreshToken: refreshToken
100 },
101 include: [ this.sequelize.models.User ]
102 }
103
104 return this.findOne(query).then(function (token) {
105 token.user = token.User
106
107 return token
108 })
2f372a86 109}
b81929a0
C
110
111function removeByUserId (userId, callback) {
feb4bdfd
C
112 const query = {
113 where: {
114 userId: userId
115 }
116 }
117
118 return this.destroy(query).asCallback(callback)
b81929a0 119}