import CRUDBase from './CRUDBase.js' import { session } from '../service/Session.service.js' class AppResource extends CRUDBase { endpoint = '/api/v1/applications' required_fields = ['name', 'identifier'] permission_base = 'v1:applications' item = 'Application' plural = 'Applications' listing_definition = { display: ` An application is anything that can authenticate users against ${session.get('app.name')}. Applications can have any number of associated LDAP clients, SAML service providers, and OAuth2 clients. `, columns: [ { name: 'Name', field: 'name', }, { name: 'Identifier', field: 'identifier', }, { name: 'Description', field: 'description', }, ], actions: [ { type: 'resource', position: 'main', action: 'insert', text: 'Manual Setup', color: 'outline-success', }, { position: 'main', action: 'redirect', text: 'Setup Wizard', color: 'success', next: '/dash/app/setup', }, { type: 'resource', position: 'row', action: 'update', icon: 'fa fa-edit', color: 'primary', }, { type: 'resource', position: 'row', action: 'delete', icon: 'fa fa-times', color: 'danger', confirm: true, }, ], } form_definition = { fields: [ { name: 'Name', field: 'name', placeholder: 'Awesome App', required: true, type: 'text', }, { name: 'Identifier', field: 'identifier', placeholder: 'awesome_app', required: true, type: 'text', }, { name: 'Description', field: 'description', type: 'textarea', }, { name: 'Associated LDAP Clients', field: 'ldap_client_ids', type: 'select.dynamic.multiple', options: { resource: 'ldap/Client', display: 'name', value: 'id', }, }, { name: 'Associated OAuth2 Clients', field: 'oauth_client_ids', type: 'select.dynamic.multiple', options: { resource: 'oauth/Client', display: 'name', value: 'id', }, }, { name: 'Associated SAML Service Providers', field: 'saml_service_provider_ids', type: 'select.dynamic.multiple', options: { resource: 'saml/Provider', display: 'name', value: 'id', }, }, ], } } const app = new AppResource() export { app }