Setting up multiple extranet sites in a Satellite-Hub configuration

Zenario allows you to set up two or more extranet sites, in which the user data on both sites is kept in sync.

It allows you to set up a syndicated-authentication system for extranet user authentication.

Requirements

This is currently possible where:

  • Both sites are Zenario CMS (version 7.0.2 or later)
  • Both sites are on the same version/patch number of Zenario (e.g. you cannot have a site running on version 7.0.3 kept in sync with a site running on version 7.0.2, or a site running on version 7.0.2b kept in sync with a site running on version 7.0.2a).
  • Both sites have the Pro Features, Users and Scheduled Task Manager modules running
  • Both sites are on the same server, or otherwise have a direct connection into the other's MySQL database (typically via port 3306)

There is presently no http-based API connection.

The Hub site

There can only be one Hub site.

You may create extranet users on the Hub, and they may be able to log in to the hub and perform usual personal administration functions (subject to the extranet plugins that you make available, e.g. sign-up, login, recover password, change password, change profile, etc.).

All administration is available; administrators will have usual access to all Hub users.

Users on the hub site will have their data automatically synchronised out to Satellite sites.

Satellite sites

There can be one or more Satellite sites.

You may create extranet users on the Satellite, and these people may be able to perform usual personal administration functions, again subject to the extranet plugins on the Satellite's front-end. 

In Organizer, two kinds of users may be administered:

  • Satellite users (whose data remains on the Satellite only)
  • Hub users (whose data has been copied via a synchronisation mechanism from the Hub to the Satellite).

Synchronisation

The synchronisation works like this:

  • Users created on the Hub will have their data copied to the Satellite; they may log in on both sites
  • Users created on the Satellite will remain on the Satellite; their data is never moved to the Hub, and they may only log in on the Hub
  • If a Hub user logs in on the Satellite and updates his profile, his key system data fields (name and password) are updated locally and copied to the Hub.
  • If a Hub user is deleted on the Hub site, their data will be deleted from all of the Satellite sites within the next 5 minutes. (Note that Hub users cannot be deleted from a Satellite site.)

Configuration

It is recommended that you configure the sites before making creating any users on the Satellite sites to avoid errors such as duplicate screen names.

If you have already created some users on your Hub site, or if you wish to add a new Satellite site into an existing system then this is not a problem, as long as no users have been created on the Satellite site being added.

Step 1: Install and set up the sites

You should install and set up the sites as normal (i.e. create a domain name, install the software, create an empty database, run the installer... and so on).

The sites need not be on the same server, but they do need to connect to each other's databases using mysqli_connect().

Step 2: Create the usersync siteconfig file

In the CMS-root directory of your CMS installations, you will need to create a file called zenario_usersync_config.php. (I.e. it should be in the same directory as your zenario_siteconfig.php file).

The format of the zenario_usersync_config.php file is as follows:

<?php 

$hub = array(
    'DBHOST' => 'host_for_hub_site',
    'DBNAME' => 'dbname_for_hub_site',
    'DBUSER' => 'db_user_for_hub_site',
    'DBPASS' => 'password_for_hub_site',
    'DB_NAME_PREFIX' => 'zenario_');
$satellites = array(
    array(
        'DBHOST' => 'host_for_satellite_site_1',
        'DBNAME' => 'dbname_for_satellite_site_1',
        'DBUSER' => 'db_user_for_satellite_site_1',
        'DBPASS' => 'password_for_satellite_site_1',
        'DB_NAME_PREFIX' => 'zenario_'),
    array(
        'DBHOST' => 'host_for_satellite_site_2',
        'DBNAME' => 'dbname_for_satellite_site_2',
        'DBUSER' => 'db_user_for_satellite_site_2',
        'DBPASS' => 'password_for_satellite_site_2',
        'DB_NAME_PREFIX' => 'zenario_')
    //, ...
);

You must have one and only one hub site defined, and one or more satellite sites defined.

You should replace the text in italics with the database connection information for each site.

This file should be copied into the CMS-root directory of each site you wish to set up, and the contents of the file must be the same for each site!

Step 3: Run the modules

You will need to run the Pro Features, Users and Scheduled Task Manager modules.

Step 4: Enable the scheduled task

Go to Under the hood -> Set-up -> Scheduled Tasks. You will need to:

  • Enable scheduled tasks
  • Set up the cronjob by adding the code provided into your server's crontab
  • Enable the jobSyncUsers scheduled task