]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/models/oauth-token.ts
require -> import
[github/Chocobozzz/PeerTube.git] / server / models / oauth-token.ts
CommitLineData
e02643f3
C
1import * as Sequelize from 'sequelize'
2
65fcc311 3import { logger } from '../helpers'
2f372a86 4
e02643f3
C
5import { addMethodsToModel } from './utils'
6import {
7 OAuthTokenClass,
8 OAuthTokenInstance,
9 OAuthTokenAttributes,
10
11 OAuthTokenMethods
12} from './oauth-token-interface'
13
14let OAuthToken: Sequelize.Model<OAuthTokenInstance, OAuthTokenAttributes>
15let getByRefreshTokenAndPopulateClient: OAuthTokenMethods.GetByRefreshTokenAndPopulateClient
16let getByTokenAndPopulateUser: OAuthTokenMethods.GetByTokenAndPopulateUser
17let getByRefreshTokenAndPopulateUser: OAuthTokenMethods.GetByRefreshTokenAndPopulateUser
18let removeByUserId: OAuthTokenMethods.RemoveByUserId
69b0a27c 19
e02643f3
C
20export default function (sequelize, DataTypes) {
21 OAuthToken = sequelize.define('OAuthToken',
feb4bdfd
C
22 {
23 accessToken: {
67bf9b96
C
24 type: DataTypes.STRING,
25 allowNull: false
feb4bdfd
C
26 },
27 accessTokenExpiresAt: {
67bf9b96
C
28 type: DataTypes.DATE,
29 allowNull: false
feb4bdfd
C
30 },
31 refreshToken: {
67bf9b96
C
32 type: DataTypes.STRING,
33 allowNull: false
feb4bdfd
C
34 },
35 refreshTokenExpiresAt: {
67bf9b96
C
36 type: DataTypes.DATE,
37 allowNull: false
feb4bdfd
C
38 }
39 },
40 {
319d072e
C
41 indexes: [
42 {
43 fields: [ 'refreshToken' ],
44 unique: true
45 },
46 {
47 fields: [ 'accessToken' ],
48 unique: true
49 },
50 {
51 fields: [ 'userId' ]
52 },
53 {
54 fields: [ 'oAuthClientId' ]
55 }
e02643f3 56 ]
feb4bdfd
C
57 }
58 )
59
e02643f3
C
60 const classMethods = [
61 associate,
62
63 getByRefreshTokenAndPopulateClient,
64 getByTokenAndPopulateUser,
65 getByRefreshTokenAndPopulateUser,
66 removeByUserId
67 ]
68 addMethodsToModel(OAuthToken, classMethods)
69
feb4bdfd 70 return OAuthToken
69b0a27c
C
71}
72
69b0a27c
C
73// ---------------------------------------------------------------------------
74
feb4bdfd 75function associate (models) {
e02643f3 76 OAuthToken.belongsTo(models.User, {
feb4bdfd
C
77 foreignKey: {
78 name: 'userId',
79 allowNull: false
80 },
81 onDelete: 'cascade'
82 })
319d072e 83
e02643f3 84 OAuthToken.belongsTo(models.OAuthClient, {
319d072e
C
85 foreignKey: {
86 name: 'oAuthClientId',
87 allowNull: false
88 },
89 onDelete: 'cascade'
90 })
feb4bdfd
C
91}
92
e02643f3 93getByRefreshTokenAndPopulateClient = function (refreshToken) {
feb4bdfd
C
94 const query = {
95 where: {
96 refreshToken: refreshToken
97 },
e02643f3 98 include: [ OAuthToken['sequelize'].models.OAuthClient ]
feb4bdfd
C
99 }
100
e02643f3 101 return OAuthToken.findOne(query).then(function (token) {
2f372a86
C
102 if (!token) return token
103
104 const tokenInfos = {
105 refreshToken: token.refreshToken,
106 refreshTokenExpiresAt: token.refreshTokenExpiresAt,
107 client: {
e02643f3 108 id: token['client'].id
2f372a86 109 },
371fa093 110 user: {
e02643f3 111 id: token['user']
371fa093 112 }
2f372a86
C
113 }
114
115 return tokenInfos
116 }).catch(function (err) {
117 logger.info('getRefreshToken error.', { error: err })
118 })
69b0a27c
C
119}
120
e02643f3 121getByTokenAndPopulateUser = function (bearerToken) {
feb4bdfd
C
122 const query = {
123 where: {
124 accessToken: bearerToken
125 },
e02643f3 126 include: [ OAuthToken['sequelize'].models.User ]
feb4bdfd
C
127 }
128
e02643f3
C
129 return OAuthToken.findOne(query).then(function (token) {
130 if (token) token['user'] = token.User
feb4bdfd
C
131
132 return token
133 })
69b0a27c 134}
2f372a86 135
e02643f3 136getByRefreshTokenAndPopulateUser = function (refreshToken) {
feb4bdfd
C
137 const query = {
138 where: {
139 refreshToken: refreshToken
140 },
e02643f3 141 include: [ OAuthToken['sequelize'].models.User ]
feb4bdfd
C
142 }
143
e02643f3
C
144 return OAuthToken.findOne(query).then(function (token) {
145 token['user'] = token.User
feb4bdfd
C
146
147 return token
148 })
2f372a86 149}
b81929a0 150
e02643f3 151removeByUserId = function (userId, callback) {
feb4bdfd
C
152 const query = {
153 where: {
154 userId: userId
155 }
156 }
157
e02643f3 158 return OAuthToken.destroy(query).asCallback(callback)
b81929a0 159}