...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# This piece of code should be put in an initializer. # # With the Maestrano SDKs, you have the ability to add as many # marketplace configurations as you want. E.g.: you can add a configuration manifest # for 'maestrano' and another one for 'acme-corp'. # # These configuration manifests only need to be added for Enterprise Tenants, which host a dedicated # Maestrano infrastructure on their private cloud. # # Create a configuration manifest for the key "maestrano" # Maestrano.with("acme-corp").configure({ # Tenant specific configuration sso_idp: "https://maestrano.com", account_api_host: "https://maestrano.com", connec_api_host: "https://api-connec.maestrano.com", # My app configuration for this tenant - note the use of the tenant key # in the url. # This URL will be used by Maestrano.com to send you notifications app_webhook_path: "https://myapp.com/mno-enterprise/maestrano/connec/receive" }) # # Create a configuration manifest for the key "acme-corp" # Maestrano.with("acme-corp").configure({ # Tenant specific configuration sso_idp: "https://saml.acme-corp.com", account_api_host: "https://accounts.acme-corp.com", connec_api_host: "https://api-connec.acme-corp.com", # My app configuration for this tenant - note the use of the tenant key # in the url. # This URL will be used by Acme Corp to send you notifications app_webhook_path: "https://myapp.com/mno-enterprise/acme-corp/connec/receive" }) |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
#
# Let's create parameterized routes
#
# The metadata route will be fetched by the enterprise tenants to retrieve your configuration
route "/mno-enterprise/:tenant_key/metadata" to "MetadataController" on action "show"
# The single sign-on routes will be used by enterprise tenants to
route "/mno-enterprise/:tenant_key/saml/initialize" to "SamlSsoController" on action "initialize"
route "/mno-enterprise/:tenant_key/saml/consume" to "SamlSsoController" on action "consume"
# The Account Webhook routes notify you of groups being removed or users being removed from groups
route "/mno-enterprise/:tenant_key/account/group/:id" to "AccountWebhookController" on action "destroy_group"
route "/mno-enterprise/:tenant_key/account/group/:group_id/user/:id" to "AccountWebhookController" on action "remove_user"
# The Connec!™ webhook route will be used by enterprise tenants to POST data sharing notifications
route "/mno-enterpise/:tenant_key/connec/receive" to "ConnecWebhookController" with action "receive"
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# The metadata controller exposes my configuration to the requesting tenant # Thanks to this metadata controller, the tenant will be able to discover my configuration # and send webhook notifications to the right endpoint. class MetadataController # The show action responds to the following route # GET /mno-enterprise/:tenant_key/metadata function show # Because the URL was parameterized, we can retrieve the tenant key # from the URL parameters tenant_key = params['tenant_key'] # Next step to make sure we authenticate the tenant. Authentication is # tenant specific unless Maestrano.with(tenant_key).authenticate(http_basic['login'],http_basic['password']) render_json("Unauthorized, code: '401') end # Eventually, we render our configuration manifest for this specific tenant render_json(Maestrano.with(tenant_key).to_metadata) end end |
...