waldemarnt / cake-multi-tenant
Installs: 75
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 1
Open Issues: 1
Type:cakephp-plugin
Requires
This package is not auto-updated.
Last update: 2024-12-21 20:17:11 UTC
README
The Multi Tenant plugin allows an application to be separated in several applications having own routes, sharing the same code and different databases (or the same).
##Installing Via composer:
composer require waldemarnt/cake-multi-tenant
Or just download the repository here
##Configuration
###bootstrap.php configuration
Just call the plugin below the Dispatch configuration in your boostrap, enable routes and boostrap.
CakePlugin::load('CakeMultiTenant', array('routes' => true, 'bootstrap' => true));
###core.php configuration In the core file you will need add the several properties. Current tenant (or default).
Configure::write('Config.current_tenant', 'example');
Note: current tenant will be the active tenant, you can use this information to know which tenant is active.
Tenant configuration will be an array using the tenant name as a index and connection_name will be the name of database connection that the tenant will use.
Configure::write('Config.multi_tenant_config', [ 'example' => [ 'name' => 'Example Tenant', 'connection_name' => 'my_custom_db_connection' ], 'waldemar' => [ 'name' => 'Waldemar', 'connection_name' => 'my_other_db_connection' ] ] );
###database.php configuration In the database file you just need add the configuration for each tenant like this:
public $my_custom_db_connection = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => '172.17.0.3', 'login' => 'root', 'password' => 'root', 'database' => 'db_one', 'prefix' => '', //'encoding' => 'utf8', ); public $my_other_db_connection = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => '172.17.0.3', 'login' => 'root', 'password' => 'root', 'database' => 'db_two', 'prefix' => '', //'encoding' => 'utf8', );
AppModel.php configuration
Just extend your AppModel from MultiTenantAppModel, the MultiTenantAppModel that handles the database switch when the model will be created.
App::uses('MultiTenantAppModel', 'CakeMultiTenant.Model'); class AppModel extends MultiTenantAppModel { }
###AppController.php In the AppController you will need configure two stuffs, Html Helper and AuthComponent (if you need auth :D). Html helper configuration:
public $helpers = array( 'Html' => array('className' => 'CakeMultiTenant.MultiTenantHtml'), );
AuthComponent configuration:
public $components = array( 'Auth' => [ 'className' => 'CakeMultiTenant.MultiTenantAuth' );
Note: you can add loginAction and LoginRedirect configurations in the Auth component there's no change in the original behavior of the component.
Version
0.*