]>
Commit | Line | Data |
---|---|---|
67bf9b96 C |
1 | 'use strict' |
2 | ||
2f372a86 C |
3 | const logger = require('../helpers/logger') |
4 | ||
69b0a27c C |
5 | // --------------------------------------------------------------------------- |
6 | ||
feb4bdfd C |
7 | module.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 |
44 | function associate (models) { |
45 | this.belongsTo(models.User, { | |
46 | foreignKey: { | |
47 | name: 'userId', | |
48 | allowNull: false | |
49 | }, | |
50 | onDelete: 'cascade' | |
51 | }) | |
52 | } | |
53 | ||
2f372a86 | 54 | function 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 | 82 | function 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 | 97 | function 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 | |
112 | function 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 | } |