waldemarnt/cake-multi-tenant

There is no license information available for the latest version (v0.0.7) of this package.

v0.0.7 2015-12-18 01:58 UTC

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.*