]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/models/oauth/oauth-client.ts
Client: explain to user we don't want scheme when making friends
[github/Chocobozzz/PeerTube.git] / server / models / oauth / oauth-client.ts
1 import * as Sequelize from 'sequelize'
2
3 import { addMethodsToModel } from '../utils'
4 import {
5 OAuthClientInstance,
6 OAuthClientAttributes,
7
8 OAuthClientMethods
9 } from './oauth-client-interface'
10
11 let OAuthClient: Sequelize.Model<OAuthClientInstance, OAuthClientAttributes>
12 let countTotal: OAuthClientMethods.CountTotal
13 let loadFirstClient: OAuthClientMethods.LoadFirstClient
14 let getByIdAndSecret: OAuthClientMethods.GetByIdAndSecret
15
16 export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
17 OAuthClient = sequelize.define<OAuthClientInstance, OAuthClientAttributes>('OAuthClient',
18 {
19 clientId: {
20 type: DataTypes.STRING,
21 allowNull: false
22 },
23 clientSecret: {
24 type: DataTypes.STRING,
25 allowNull: false
26 },
27 grants: {
28 type: DataTypes.ARRAY(DataTypes.STRING)
29 },
30 redirectUris: {
31 type: DataTypes.ARRAY(DataTypes.STRING)
32 }
33 },
34 {
35 indexes: [
36 {
37 fields: [ 'clientId' ],
38 unique: true
39 },
40 {
41 fields: [ 'clientId', 'clientSecret' ],
42 unique: true
43 }
44 ]
45 }
46 )
47
48 const classMethods = [
49 associate,
50
51 countTotal,
52 getByIdAndSecret,
53 loadFirstClient
54 ]
55 addMethodsToModel(OAuthClient, classMethods)
56
57 return OAuthClient
58 }
59
60 // ---------------------------------------------------------------------------
61
62 function associate (models) {
63 OAuthClient.hasMany(models.OAuthToken, {
64 foreignKey: 'oAuthClientId',
65 onDelete: 'cascade'
66 })
67 }
68
69 countTotal = function () {
70 return OAuthClient.count()
71 }
72
73 loadFirstClient = function () {
74 return OAuthClient.findOne()
75 }
76
77 getByIdAndSecret = function (clientId: string, clientSecret: string) {
78 const query = {
79 where: {
80 clientId: clientId,
81 clientSecret: clientSecret
82 }
83 }
84
85 return OAuthClient.findOne(query)
86 }