承接 poweronsystem/authorizationservice 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

poweronsystem/authorizationservice

Composer 安装命令:

composer require poweronsystem/authorizationservice

包简介

Servicio de autorizacion de usuarios y sectores.

README 文档

README

Servicio de autorización de usuarios, inicio, cierre, pausa y resumen de sesión.

Instalación vía Composer

Podés instalar AuthorizationService vía Composer a través de la consola:

$ composer require poweronsystem/authorizationservice

Requisitos

  • PHP >= 5.4
  • poweronsystem/utility: "^0.1.3"

Uso

Instancia y configuración

Creación de la clase y configuración básica de la misma

//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);

Ejemplo de autenticación de usuarios

Adaptador de sesiones

Adaptador de ejemplo

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;
    }

}

Registrar adaptador a la clase

//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);

Inicio de sesión

//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
}

Cierre de sesión

$auth->logout();

echo $auth->getStatus(); //user_not_found

Pausa

$auth->pause();

echo $auth->getStatus(); //paused
var_dump($auth->isValid()); //bool(false)

Resumen

$auth->resume();

echo $auth->getStatus(); //ok
echo $auth->getUserCredentials->getSessionInactiveTime(); //120
var_dump($auth->isValid()); //bool(true)

Ejemplo de authorización de sectores

Ejemplo básico para la validación de sectores

Configuración de permisos

//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);

Ejecución de validación de permisos de sectores

//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

统计信息

  • 总下载量: 38
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-07-28

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固