Skip to content

Raydium's Tenancy Component

Overview

The Tenancy component within the Raydium Framework is dedicated to enabling and managing multi-tenant configurations, where a single application instance serves multiple tenants, each with its own set of resources and configurations. This component is crucial for applications that require isolation between tenants for security, data privacy, or customization purposes.

Key Functionalities

Multi-Tenant Initialization

  • Tenant Configuration Loading: Dynamically loads tenant-specific configurations based on the HTTP host, enabling the application to adjust its environment and settings per tenant.
  • Tenant Constants Definition: Defines essential constants that are specific to the current tenant, such as the tenant ID and tenant-specific paths.

Environment Configuration

  • Dotenv Integration: Utilizes Dotenv for environment variable management, ensuring that each tenant's environment variables are securely loaded and accessible within the application.

Error Handling and Termination

  • Error and Exception Management: Provides robust error handling mechanisms, including the capability to terminate the application with informative error messages if tenant configuration issues arise.

Component Lifecycle

Initialization

Upon instantiation, the Tenancy component requires the base application path and the site configuration directory. It then proceeds to check for the existence of a tenancy.php configuration file and loads it if available.

Multi-Tenant Setup

If multi-tenancy is allowed (ALLOW_MULTITENANT is defined and set to true), the component sets up the multi-tenant environment by:

  • Validating landlord database credentials.
  • Fetching the tenant's information based on the domain.
  • Defining tenant-specific constants.
  • Regenerating the tenant's .env environment file if necessary.

Tenant-Specific Constant Definition

The component defines constants critical for the operation of a multi-tenant environment, such as APP_TENANT_ID, which is unique to each tenant, and IS_MULTITENANT, indicating the multi-tenant mode.

Environment File Regeneration

For tenants that do not have an existing .env file, the Tenancy component utilizes the EnvGenerator to create a new .env file with tenant-specific configurations, ensuring that the application is correctly configured for each tenant.

Integration in the Raydium Framework

The Tenancy component is integral to applications that require multi-tenancy support, seamlessly integrating with the Raydium Framework's lifecycle. It ensures that each tenant's environment is correctly set up before the application starts, providing a tailored experience for each tenant while maintaining isolation and security.

Usage Guidelines

To effectively leverage the Tenancy component within a multi-tenant application:

  • Ensure that the ALLOW_MULTITENANT constant is defined and set to true to enable multi-tenant support.
  • Provide a tenancy.php configuration file with necessary tenant definitions and settings.
  • Ensure that the landlord's database credentials are correctly specified in the environment variables.

The Tenancy component is essential for Raydium Framework applications that serve multiple tenants from a single application instance. By enabling dynamic tenant configuration loading, tenant isolation, and secure environment management, the Tenancy component facilitates the development of scalable and secure multi-tenant applications, adhering to best practices in software architecture and cloud-native application design.