User Tools

Site Tools


dev:adaptation_des_applications_au_cas_-_php

This is an old revision of the document!


Le remplacement de l'authentification Intranet par le CAS implique de gérer deux chose :

  • la configuration de la protection CAS sur une application
  • la gestion des droits d'accès en fonction de l'appartenance à des catégories de personnel

Ces deux points étaient gérée entièrement par authentification Intranet alors que le CAS ne gère que la première. Il est donc indispensable de gérer par du code le filtrage des gens que se connectent.

Pour ce faire une solution est de mettre en place un système de comparaison entre une liste locale à chaque application et de la comparer avec la liste des groupe d'appartenance renvoyée par le CAS.

<?xml version="1.0" encoding="UTF-8"?>
<intranet>
	<groupeAccess>
		<groupe>ulb:all:personnel:patgs</groupe>
		<groupeDenomination>Le personnel administratif de l'université libre de bruxelles</groupeDenomination>
	</groupeAccess>
</intranet>
function groupeAccess($arrayGroupe)
{
    $arrayGroupePropre = array();
    foreach ($arrayGroupe as $LigneGroupe)
    {
 
        $Groupe=substr($LigneGroupe, (strpos($LigneGroupe,"[id=")+4));
        $Groupe=rtrim($Groupe,"]");
        array_push($arrayGroupePropre,$Groupe);
    }
    return $arrayGroupePropre;
}
function hasAccess($arrayGroupe) 
{
    $arrayGroupePropre = groupeAccess($arrayGroupe);
 
 
    $file="./access.xml";
    $xml = new DOMDocument();
    if(!$xml->load($file))
    {
        echo "<br>Erreur avec dom. Pas bien !";
    }
 
    $groupeAccess=$xml->getElementsByTagName('groupeAccess');
    $trouve=false;
    foreach ($groupeAccess as $groupeHasAccess) 
    {
        $groupe=$groupeHasAccess->getElementsByTagName('groupe');
        if(in_array($groupe->item(0)->nodeValue,$arrayGroupePropre))
        {
            $trouve=true;
        }
    }
    return $trouve;
}
dev/adaptation_des_applications_au_cas_-_php.1600762349.txt.gz · Last modified: 2024/04/04 10:18 (external edit)