Add support for OpenID connect!!
This commit is contained in:
44
app/models/openid/Client.model.js
Normal file
44
app/models/openid/Client.model.js
Normal file
@@ -0,0 +1,44 @@
|
||||
const { Model } = require('flitter-orm')
|
||||
const uuid = require('uuid').v4
|
||||
|
||||
class ClientModel extends Model {
|
||||
static get services() {
|
||||
return [...super.services, 'models']
|
||||
}
|
||||
|
||||
static get schema() {
|
||||
return {
|
||||
payload: {
|
||||
client_id: { type: String, default: uuid },
|
||||
client_secret: { type: String, default: uuid },
|
||||
client_name: String,
|
||||
grant_types: [String],
|
||||
redirect_uris: [String],
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
to_api() {
|
||||
const vals = ['client_id', 'client_secret', 'client_name', 'grant_types']
|
||||
const val = {}
|
||||
for ( const item of vals ) {
|
||||
val[item] = this.payload[item]
|
||||
}
|
||||
val.redirect_uri = this.payload?.redirect_uris?.[0]
|
||||
val.id = this.id
|
||||
return val
|
||||
}
|
||||
|
||||
async save() {
|
||||
await super.save()
|
||||
this.payload.client_id = this.id
|
||||
return super.save()
|
||||
}
|
||||
|
||||
async application() {
|
||||
const Application = this.models.get('Application')
|
||||
return Application.findOne({ active: true, oauth_client_ids: this.id })
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = exports = ClientModel
|
||||
Reference in New Issue
Block a user