Andreas Schaefer created a page:
Multitenancy Support Integration
Tenant Integration
Introduction
Like with tenants in an apparment complex tenants in Sling are users that have their own space but share common amnemities like an elevator, laundry room and so on.Now for Sling Tenantsmean severals things and this document wants to document them, their use cases and look for an implementation of the requirements in Sling.
Currently there is a Tenantmodule in the contrib/extensionspackage which provides the following:
Tenant
Tenant Manager and Provider interface
TenantProviderImpl that implements the Tenant Manager and Provider Interface
TenantAdapterFactory which can adapt a Resource or Resource Resolver to a Tenant
Tenant Customizer interface that lets a client add a service to further customize a Tenant during creation and clean up during removal
This package provides the basics but does not provide any implementation a multi-teant aware server. There are also parts of the proposal missing like providing the Tenant on the Sling Http Servlet Request.
Tenant Definition
A full fledged Tenant implementation would allow the Sling host to create a tenant, create group(s) / users(s) to login as **tenant developer** on the site and provide a tenant specific view to the public. This includes the following features:
Visibility: A tenant developer and the public tenant viewer only see the tenant space and don't have access to other tenants
Customization: The Sling host can provide basic frameworks which then tenant then can overlay with its own customization which includes:
Code: ESPs, JSPs and Servlets can be overlaid by a tenant to provide its own view
I18N: Tenants must be able to overlay the Internationalization so that they can provide and use their own translations
Content: Most tenants will provide their own content but the host might provide some common content so there must be a way to fall back onto common content.
Discovery: A tenant must be discovered based on various data like the logged in user, resource path, sub domain name, cookie (a service outside of Sling is setting a tenant cookie) and others. This is especially important for the public view but also for administrators which might want to see a particular tenant view without impersonating
Configuration: Sling should provide a way to setup a tenant in a simple step. For that Sling should provide its own Tenant Customizer which creates the necessary paths, groups / users and content folders.
Implementation