Installation et utilisation de protophp

Présentation

PrototypePHP (ou protophp) est un canevas de développement d'application PHP, qui inclut par défaut un certain nombre de « bonnes pratiques » :

Installation

Décompresser le fichier protophp.xx.gz dans une branche de l'arborescence du serveur web, puis renommer le dossier au nom de l'application à développer.

Base de données

Deux scripts sont fournis : l'un pour créer uniquement la table LoginGestion, l'autre pour créer l'ensemble de la base de données phpgacl.

Si l'on souhaite gérer les droits dans la même application, créer la base de données complète. Si on souhaite gérer uniquement les logins dans l'application, créer la table LoginGestion. Si on veut gérer les droits à partir d'un SSO-CAS, et que la base de données PHPGACL est stockée ailleurs, alors ne rien créer...

Les scripts sont prévus pour MySql. Créer la base de données au préalable, y associer un login, puis exécuter ensuite le script de création de la base de données souhaité avec vos outils habituels. Personnellement, j'utilise surtout phpmyadmin...

Paramètres

Les paramètres généraux de l'application sont stockés dans deux fichiers : param/param.default.inc.php, et param/param.inc.php. En cas de livraison d'une nouvelle version de l'application, seul le fichier param.default.inc.php est relivré, ce qui évite d'écraser les paramètres locaux d'exécution sur les plates-formes mises à jour.

Mettre à jour les paramètres par rapport à votre propre base de données.

Il faut aussi renseigner les paramètres spécifiques à phpgacl, dans le fichier param/gacl.ini.php. Une version ultérieure intégrera les deux fichiers de paramètres en un seul.

Modification des droits sur les dossiers de travail de smarty

Donner les droits totaux sur les dossiers suivants : plugins/phpgacl/admin/templates_c et templates_c.

Sécurité

Vérifier que le dossier ident est redirigé vers https (directive dans .htaccess)

Vérifier que le dossier param est inaccessible (directive dans .htaccess)

Utilisation

Logins par défaut

Quel que soit votre mode d'identification (base de données, CAS, ou LDAP), vous devez disposer d'un login admin (sinon, utilisez la première fois l'identification par base de données, puis définissez les droits adéquats dans le module phpgacl). Les scripts de création de la base de données créent par défaut deux login :

Gestion des droits

Lancer l'application (proto/index.php), identifiez-vous avec le login admin, puis allez dans Administration>Gestion des droits.

Deux onglets sont indispensables pour gérer correctement les droits : ACL Admin, qui permet de créer les logins et les groupes d'objets auxquels on va donner les droits, et ARO group Admin, dans lequel on va organiser les logins par groupes d'utilisateurs. Les droits seront ensuite attribués dans l'onglet ACL Admin, en sélectionnant les « Access Control Objects » et les « Groups ».

Par défaut, deux droits principaux ont été créés dans l'application proto : admin, et gestion, et deux complémentaires (pour montrer le fonctionnement des droits hérités) gestionAdmin et gestionValid. Le login admin peut indifféremment accéder à tous les modules qui nécessitent soit les droits gestion, gestionadmin ou gestionvalid, alors que le login gestion n'a accès qu'aux pages du niveau gestion.

Les droits peuvent être consultés par l'intermédiaire de l'onglet ACL list ou ACL test (en 2 dimensions uniquement dans cette configuration).

Consultez la doc de phpgacl, et regardez comment ont été écrits les scripts de gestion des droits dans le dossier ident (ident/identification.php, ident/ident.inc.php, ident/identification.class.php).

Une nouvelle page...

Il suffit de rajouter les trois lignes suivantes :

if(!isset($path_inc)) $path_inc = "../";

include_once($path_inc."common.inc.php");


getgacl("admin");

$path_inc permet de spécifier la racine par rapport à la page courante (ici, on doit redescendre « d'un étage » dans l'arborescence pour retrouver la racine de l'application).

La fonction getcacl permet de vérifier que le login (déjà saisi, ou qui sera saisi) dispose des droits « admin » dans l'application, droits définis dans phpgacl.

La gestion de SMARTY

Les pages sont prévues pour être organisées en 3 niveaux : un entête (qui comprend les barres de menu), un corps et un enpied (standard).

Le nom des pages SMARTY étant paramétré, il suffit d'indiquer dans la variable smarty correspondante le nom du template correspondant au corps, puis d'afficher la page générale (en principe, en utillsant la page index.php à la racine de l'application) :

$smarty->assign("corps","main.tpl");

include($path_inc."index.php");

La gestion des menus

Les menus sont gérés notamment avec la feuille de style. L'application permet de travailler avec deux menus : un menu principal, et un menu secondaire. L'affichage et la configuration des menus sont gérés par des pages spécifiques, stockées dans le dossier menu, qui sont incluses dans la page principale :

include ($path_inc."menu/menuadministration.php");

C'est cette page qui contiendra les paramètres spécifiques d'affichage, de modification des couleurs... Les éléments de chaque item de menu sont numérotés, ce qui permet de faciliter l'affichage ou le masquage de chacun.

On utilise des variables spécfiques pour gérer les menus :

La gestion des messages

Par défaut, l'application est conçue pour afficher un message juste en dessous des menus. Pour afficher un message, il suffit de renseigner la variable de session $_SESSION["message"] dans le script. Elle sera alors affichée par l'intermédiaire de la page index.php :

$_SESSION["message"] = "identification réussie !";