poweronsystem / authorizationservice
用户和区域授权服务。
v0.2.2
2018-08-21 12:51 UTC
Requires
- php: >=5.4
- poweronsystem/webutility: ^0.1.3
Requires (Dev)
- kint-php/kint: ^2.1
- poweronsystem/databaseservice: ^0.1.1
This package is auto-updated.
Last update: 2024-09-04 23:31:23 UTC
README
用户授权、启动、关闭、暂停和会话摘要服务。
通过Composer安装
您可以通过Composer在控制台安装AuthorizationService
$ composer require poweronsystem/authorizationservice
要求
- PHP >= 5.4
- poweronsystem/utility: "^0.1.3"
使用
实例化和配置
创建类及其基本配置
//Autoload composer require '/vendor/autoload.php'; //Configuración del autenticador (Ver archivo src/Authorization.php) $config = [ 'login_session_time' => 7200, 'login_session_inactive_time' => 3600 ]; //Establecemos los permisos para los sectores $permissions = []; //Creamos una instancia del autorizador $auth = new PowerOn\Authorization\Authorization($config, $permissions);
用户认证示例
会话适配器
示例适配器
namespace App; use PowerOn\Database\Model; use PowerOn\Authorization\AuthorizationAdapterInterface; use PowerOn\Authorization\UserCredentials; public class MyAdapter implements AuthorizationAdapterInterface { private $db; public function __construct($database) { $this->db = $database; } public function login(UserCredentials $credentials) { /* Lógica de comprobación de usuario ... * Lógica de Password Hasher personalizada ... * $user = $db->getUser($credentials->username, $credentials->password); * ... */ //Si es inválido retorna FALSE //Si es correcto devuelve las credenciales con los datos del usuario que se deseen cargar $credentials->setUserData($user); //Se establece el nivel de acceso del usuario $credentials->setUserAccessLevel($user['access_level']); //Otra lógica adicional antes de finalizar... return $credentials; } public function logout() { return TRUE; } public function pauseSession() { return TRUE; } public function resumeSession() { return TRUE; } }
将适配器注册到类
//Base de datos requerida por el adaptador de ejemplo $database = new PDO(); //Instancia del adaptador $adapter = new App\MyAdapter($database); //Registro del adaptador $auth->registerAdapter($adapter);
登录
//Credenciales obtenidas de un formulario $credentals = new PowerOn\Authorization\UserCredentials($_POST['username'], $_POST['password']); try { $auth->login($login_credentials); //Login success echo $auth->getStatus(); //ok } catch (PowerOn\Authorization\AuthorizationException $e) { //Lógica de excepciones echo $auth->getStatus(); //user_not_found | user_error }
登出
$auth->logout(); echo $auth->getStatus(); //user_not_found
暂停
$auth->pause(); echo $auth->getStatus(); //paused var_dump($auth->isValid()); //bool(false)
摘要
$auth->resume(); echo $auth->getStatus(); //ok echo $auth->getUserCredentials->getSessionInactiveTime(); //120 var_dump($auth->isValid()); //bool(true)
区域授权示例
区域验证的基本示例
权限配置
//Establecemos los permisos para los sectores de la siguiente manera $permissions = [ //La url "/home" require un nivel de acceso básico de 1 '/home' => ['access_level' => 1], //Cualquier sector referente a "/admin" requerirá un nivel de acceso de 10 o superior '/admin/*' => ['access_level' => 10], //En este ejemplo solo permitimos el acceso a "/account/new-password" para que el usuario cambie su contraseña //solo en caso que haya transcurrido más de un dia desde la última modificación. '/account/new-password => ['allowed' => function(\PowerOn\Authorization\UserCredentials $userCredentials) { return (time() - $userCredentials['last_password_request_time']) > 86400; }] ]; //Creamos una instancia del autorizador $auth = new PowerOn\Authorization\Authorization($config, $permissions);
执行区域权限验证
//Clase Request genérica de ejemplo $request = new \App\MyRequestClass(); //Url obtenida de una clase request $url = $request->getUrl(); //Otros archivos adicionales a pasar en la función callable del array de permisos con la clave "allowed" $otherFile = new \App\SomeClass(); $result = $auth->sector($url, $request, $otherFile); var_dump($result); //bool(false) | bool(true) echo $auth->getStatus(); //sector_low_access_level | sector_not_allowed