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