You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CoreID/app/models/openid/Client.model.js

45 lines
1.2 KiB

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