64 lines
2.0 KiB
PHP
64 lines
2.0 KiB
PHP
|
<?php
|
||
|
namespace nur;
|
||
|
|
||
|
use nur\b\authnz\AuthzManager;
|
||
|
use nur\b\authnz\IAuthzUser;
|
||
|
|
||
|
/**
|
||
|
* Class authz: gestion de l'autorisation
|
||
|
*/
|
||
|
class authz {
|
||
|
const MANAGER_CLASS = AuthzManager::class;
|
||
|
|
||
|
protected static $manager_class;
|
||
|
|
||
|
/**
|
||
|
* spécifier la classe à utiliser pour instancier le gestionnaire
|
||
|
* d'autorisation
|
||
|
*
|
||
|
* cette méthode *doit* être appelée avant d'appeler la méthode
|
||
|
* {@link manager()}
|
||
|
*/
|
||
|
static final function set_manager_class(string $manager_class) {
|
||
|
self::$manager_class = $manager_class;
|
||
|
}
|
||
|
|
||
|
/** @var AuthzManager */
|
||
|
protected static $manager;
|
||
|
|
||
|
static final function set_manager(AuthzManager $manager) {
|
||
|
self::$manager = $manager;
|
||
|
}
|
||
|
|
||
|
/** obtenir l'instance globale du gestionnaire d'autorisation */
|
||
|
static final function manager(): AuthzManager {
|
||
|
if (self::$manager === null) {
|
||
|
$manager_class = self::$manager_class;
|
||
|
if ($manager_class === null) $manager_class = static::MANAGER_CLASS;
|
||
|
self::$manager = new $manager_class();
|
||
|
}
|
||
|
return self::$manager;
|
||
|
}
|
||
|
|
||
|
static final function __callStatic($name, $args) {
|
||
|
$name = str::us2camel($name);
|
||
|
return call_user_func_array([self::manager(), $name], $args);
|
||
|
}
|
||
|
|
||
|
#############################################################################
|
||
|
|
||
|
const NONE = AuthzManager::STATUS_NONE;
|
||
|
const INITIAL = AuthzManager::STATUS_INITIAL;
|
||
|
const DISCONNECTED = AuthzManager::STATUS_DISCONNECTED;
|
||
|
const UNAUTHORIZED = AuthzManager::STATUS_UNAUTHORIZED;
|
||
|
|
||
|
static final function get_status(): int { return self::manager()->getStatus(); }
|
||
|
static final function is_auth(): bool { return self::manager()->isAuth(); }
|
||
|
static final function is_sulogin(): bool { return self::manager()->isSulogin(); }
|
||
|
static final function get_auth(): string { return self::manager()->getAuth(); }
|
||
|
static final function get(): IAuthzUser { return self::manager()->getUser(); }
|
||
|
|
||
|
static final function is_root(): bool { return self::get()->isRole("root"); }
|
||
|
static final function is_admin(): bool { return self::get()->isRole("admin"); }
|
||
|
}
|