]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/models/oauth-token.js
Update migrations code
[github/Chocobozzz/PeerTube.git] / server / models / oauth-token.js
1 const logger = require('../helpers/logger')
2
3 // ---------------------------------------------------------------------------
4
5 module.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
34 }
35
36 // TODO: validation
37 // OAuthTokenSchema.path('accessToken').required(true)
38 // OAuthTokenSchema.path('client').required(true)
39 // OAuthTokenSchema.path('user').required(true)
40
41 // ---------------------------------------------------------------------------
42
43 function associate (models) {
44 this.belongsTo(models.User, {
45 foreignKey: {
46 name: 'userId',
47 allowNull: false
48 },
49 onDelete: 'cascade'
50 })
51 }
52
53 function getByRefreshTokenAndPopulateClient (refreshToken) {
54 const query = {
55 where: {
56 refreshToken: refreshToken
57 },
58 include: [ this.associations.OAuthClient ]
59 }
60
61 return this.findOne(query).then(function (token) {
62 if (!token) return token
63
64 const tokenInfos = {
65 refreshToken: token.refreshToken,
66 refreshTokenExpiresAt: token.refreshTokenExpiresAt,
67 client: {
68 id: token.client.id
69 },
70 user: {
71 id: token.user
72 }
73 }
74
75 return tokenInfos
76 }).catch(function (err) {
77 logger.info('getRefreshToken error.', { error: err })
78 })
79 }
80
81 function getByTokenAndPopulateUser (bearerToken) {
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 })
94 }
95
96 function getByRefreshTokenAndPopulateUser (refreshToken) {
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 })
109 }
110
111 function removeByUserId (userId, callback) {
112 const query = {
113 where: {
114 userId: userId
115 }
116 }
117
118 return this.destroy(query).asCallback(callback)
119 }