Edit this topic

Shell

: /modules/core/multi-tenancy/lib/shell.js

: https://github.com/DecentCMS/DecentCMS/blob/master/modules/core/multi-tenancy/lib/shell.js

class: Shell

new Shell(options)

A shell is the representation of a tenant in the system. A shell has its own enabled services, that can be required by modules running in its context.

Param Type Description
options Object
[options.name] String The name of the tenant.
[options.rootPath] String The path to the site's folder.
[options.settingsPath] String The path to the settings file for this tenant.
[options.host] String The host name under which the tenant answers.
[options.debugHost] String A host name under which the tenant answers, that causes request.debug to be true.
[options.port] Number The port to which the tenant answers.
[options.https] Boolean True if the site must use HTTPS.
[options.cert] String The path to the SSL certificate to use with this tenant.
[options.key] String The path to the SSL key to use with this tenant.
[options.pfx] String The path to the pfx SSL certificate to use with this tenant.
[options.features] Array The list of enabled feature names on this tenant.
[options.availableModules] Object The list of available module manifests.
[options.services] Object The enabled services keyed by service name.
[options.active] Boolean True if the tenant is active.

shell.canHandle(request) ⇒ Boolean

Determines if the shell can handle that request.

Returns: Boolean - true if the shell can handle the request.

Param Description
request The request

shell.enable(state)

Enables or disables the tenant.

Param Type Description
state Boolean If provided, sets the enabled state of the tenant. Otherwise, enables the tenant.

shell.disable()

Disables the tenant.

shell.load()

Scopes the shell, then loads all enabled services in each module, including modules and themes that are specific to this tenant.

shell.loadModule(moduleName)

Loads all the services in the module under the path passed as a parameter. Services are loaded while respecting the dependency order.

Param Type Description
moduleName String The name of the module to load.

shell.middleware(request, response, next)

Middleware for use, for example, with Express.

Param Type Description
request http.IncomingMessage Request
response http.ServerResponse Response
next function The callback.

shell.handleRequest(request, response, next)

Handles the request for the tenant Emits the following events and service calls:

  • decent.core.shell.start-request
  • 'route-handler'.handle({shell, request, response}, done)
  • 'storage-manager'.fetchContent({shell, request, response}, done)
  • 'renderer'.render({shell, request, response}, done)
  • decent.core.shell.render-error
  • decent.core.shell.end-request
Param Type Description
request Request
response Response
next function The callback

Shell.empty

An empty shell that you can use to initialize services if you don't need multitenancy.

Shell.list

The list of tenants.

Shell.startRequestEvent → string

The event that is broadcast at the beginning of request handling. This is a good time to attach a service to the request object.

Shell.endRequestEvent → string

The event that is broadcast at the end of request handling. This is a good time to detach services and events.

Shell.renderPageEvent → string

The event that is broadcast when the page is ready to be rendered.

Shell.renderErrorPage → string

This event is triggered when an error has happened during the page lifecycle.

Shell.renderErrorPage_payload

The payload is the error object.

Shell.load(sitePath, [defaults]) ⇒ Shell

Creates a shell from its settings file.

Returns: Shell - The new shell

Param Type Description
sitePath String The path of the settings file.
[defaults] Object Default settings.

Shell.discover(defaults, rootPath)

Discovers all tenants in the ./sites directory.

Param Type Description
defaults Object Default settings for the shells.
rootPath String The root path where to look for shell settings files. Defaults to ./sites

Shell.resolve(request)

Returns the shell that should handle this request.

Param Type Description
request IncomingMessage The request