]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - server/models/oauth-token.js
Update migrations code
[github/Chocobozzz/PeerTube.git] / server / models / oauth-token.js
... / ...
CommitLineData
1const logger = require('../helpers/logger')
2
3// ---------------------------------------------------------------------------
4
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
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
43function associate (models) {
44 this.belongsTo(models.User, {
45 foreignKey: {
46 name: 'userId',
47 allowNull: false
48 },
49 onDelete: 'cascade'
50 })
51}
52
53function 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
81function 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
96function 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
111function removeByUserId (userId, callback) {
112 const query = {
113 where: {
114 userId: userId
115 }
116 }
117
118 return this.destroy(query).asCallback(callback)
119}