authentication : better error management in configuration (Exception in case of errors).

git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@2254 bf3deb0d-5f1a-0410-827f-c0cc1f45334c
This commit is contained in:
2015-08-17 12:05:21 +00:00
parent 521540bc1c
commit 907e92ced8

View File

@@ -217,6 +217,8 @@ class authentication
an exception if noting is found */
private function verifAuth ($email, $password)
{
if (! is_array ($this->authMethods) || count ($this->authMethods) === 0)
throw new Exception ("No authentication method defined", 500);
if (isset ($_SESSION["domframework"]["authentication"]["lastcheck"]) &&
$_SESSION["domframework"]["authentication"]["lastcheck"] + 180 <
time ())
@@ -228,19 +230,30 @@ class authentication
foreach ($this->authMethods as $method)
{
if (! is_string ($method))
throw new Exception ("The authentication method is not a string", 500);
$classname = "auth$method";
require_once ("domframework/$classname.php");
if (! array_key_exists ($classname, $this->authServers))
throw new Exception ("No authentication server '$classname' enabled",
500);
// If only one server is defined, the parameters can directely be pushed
// to the classname
if (! is_array ($this->authServers[$classname]))
if (! is_array (reset ($this->authServers[$classname])))
{
$this->authServers[$classname] = array ($this->authServers[$classname]);
}
if (! is_array ($this->authServers[$classname]) ||
count ($this->authServers[$classname]) === 0)
throw new Exception ("No authentication server defined for method ".
"'$method'", 500);
foreach ($this->authServers[$classname] as $key=>$serversParam)
{
if ($this->debug)
echo "Test auth server $method # $classname # $key\n";
if (! is_array ($serversParam))
throw new Exception ("Auth Server $key configuration error : ".
"not an array", 500);
$authmethod = new $classname ();
foreach ($serversParam as $param=>$value)
{