Réseau privé - « Walled Garden »

Elgg prend en charge un mode Walled Garden - jardin clos, ou réseau privé. Dans ce mode, presque toutes les pages ne sont accessible qu’aux seuls utilisateurs connectés. Ceci est utile pour les sites qui n’autorisent pas l’inscription publique.

Activer le mode réseau privé - Walled Garden

Pour activer le mode Walled Garden dans Elgg, accédez à la section Administration. Dans le menu de la barre latérale droite, sous la section « Configurer », développez « Paramètres » puis cliquez sur « Avancé ».

Dans la page Paramètres avancés, recherchez l’option libellée « Restreindre les pages aux utilisateurs connectés ». Activez cette option, puis cliquez sur « Enregistrer » pour basculer votre site en mode Walled Garden.

Exposer des pages à travers le Walled Garden

De nombreux plugins étendent Elgg en ajoutant des pages. Le mode Walled Garden empêchera ces pages d’être consultées par les utilisateurs déconnectés. Elgg utilise events pour gérer quelles pages sont visibles à travers le Walled Garden.

Les auteurs de plugins doivent enregistrer les pages comme publiques si elles doivent être visibles à travers le walled garden :

  • en définissant 'walled' => false dans la configuration des routes

  • en répondant à l’événement public_pages, walled_garden. La valeur renvoyée est un tableau d’expressions rationnelles regexp pour les pages publiques.

Le code suivant montre comment exposer http://exemple.org/mon_plugin/public_page à travers le walled garden. Cela suppose que le plugin a enregistré une route pour mon_plugin/public_page.

// Preferred way
elgg_register_route('my_plugin:public_page', [
    'path' => '/my_plugin/public_page',
    'resource' => 'my_plugin/public_page',
    'walled' => false,
]);

// Legacy approach
elgg_register_event_handler('public_pages', 'walled_garden', 'my_plugin_walled_garden_public_pages');

function my_plugin_walled_garden_public_pages(\Elgg\Event $event) {
   $pages = $event->getValue();

   $pages[] = 'my_plugin/public_page';

   return $pages;
}