Alexya의 역할 기반 액세스 시스템 유틸리티.
권한은 사용자가 특정 조치를 수행하도록 승인하는 방법입니다.
클래스 AlexyaRolesPermission 특정 역할에 할당 할 수있는 권한을 나타냅니다.
권한은 식별자, 제목 및 상태 플래그로 구성됩니다.
이 클래스를 쉽게 확장하여 대체 이름, 순위와 같은 더 많은 기능을 제공 할 수 있습니다 ...
예를 들어, 파일 시스템에서 각 사용자는 특정 파일을 읽거나 쓸 수있는 권한이 있어야합니다.
<?php
namespace Application RBAC Permissions ;
use Alexya Roles Permission ;
class Read extends Permission
{
/**
* Constructor.
*/
public function __construct ()
{
parent :: __construct ( 1 , " read " , Permission:: STATUS_INHERITED );
}
}
class Write extends Permission
{
/**
* Constructor.
*/
public function __construct ()
{
parent :: __construct ( 2 , " write " , Permission:: STATUS_INHERITED );
}
}역할은 다양한 권한의 컨테이너입니다.
클래스 AlexyaRolesRole 그 자체로 역할을 나타냅니다.
이 역할에 대한 부여 된 권한에 대한 역할, 제목 및 Permission 배열에 대한 식별자가 있습니다. 또는 역할은 상속에 대한 부모의 역할을 할 수 있습니다.
또한 역할의 우선 순위를 나타내는 정수가 있고, 숫자가 커지고, 우선 순위가 가장 높습니다.
이 메소드 hasPermission 권한의 식별자 또는 권한의 인스턴스를 수락 하고이 역할이 허가로 승인되었는지 확인합니다.
더 짧은 버전의 경우 'Cuz Shorter> Londer를 can 수 있습니다.
예:
namespace Application RBAC Roles ;
use Alexya Roles Role ;
class CanRead extends Role
{
/**
* Constructor
*/
public function __construct ()
{
parent :: __construct ( 1 , " can_read " , 1 );
}
}
class CanWrite extends Role
{
/**
* Constructor
*/
public function __construct ()
{
parent :: __construct ( 2 , " can_write " , 1 );
}
}
class CanReadAndWrite extends Role
{
/**
* Constructor.
*/
public function __construct ()
{
parent :: __construct ( 3 , " can_read_and_write " , 2 );
}
}권한과 역할이 있으면 어떤 권한이 부여 된 역할을 지정해야합니다.
권한을 활성화, 비활성화 또는 상속받을 수 있습니다. 허가가 상속되면 역할은 부모 역할에서 해당 허가 상태를 확인합니다. 부모 역할이 없으면 장애인으로 취급됩니다.
역할에 권한을 추가하는 것은 추가 권한으로 addPermission 메소드를 호출하는 것만 큼 쉽습니다.
예:
$ canRead = new CanRead ();
$ canRead -> addPermission ( new Read ());
$ canWrite = new CanWrite ();
$ canWrite -> addPermission ( new Write ());
$ canReadAndWrite = new CanReadAndWrite ();
$ canReadAndWrite -> addPermission ( new Read ());
$ canReadAndWrite -> addPermission ( new Write ());
// Alternatively you could have set the parent role like this:
// $canReadAndWrite = new CanReadAndWrite();
// $canReadAndWrite->parent = $canRead;
// $canReadAndWrite->addPermission(new Write()); 역할이 특정 권한을 부여했는지 확인하려면 hasPermission 또는 can 방법을 사용할 수 있습니다.
$ canRead -> can ( " read " ); // true
$ canRead -> can ( 2 ); // false (Write permission has ID 2)
$ canRead -> can ( new Read ()); // true 메소드 getPermission 역할에서 권한을 반환합니다.
$ read = $ canRead -> getPermission ( new Read ()); // The Read permission sent through `addPermission`
$ write = $ canRead -> getPermission ( " write " ); // null; 역할과 권한이있어 사용자가 할당해야합니다.
클래스 AlexyaRolesUser 역할이 할당되는 사용자를 나타냅니다.
hasPermission 을 제공 하고이 사용자에게 권한이 부여되는지 확인하기위한 방법을 can 사용자에게 역할을 추가하기 위해 확장 해야하는 클래스입니다.
또한 역할을 추가/제거하는 방법 addRole 및 removeRole 방법이 있습니다.
예:
$ user = new User ();
$ user -> addRole ( 2 );
$ user -> can ( new Read ()); // false
$ user -> can ( new Write ()); // true
$ user -> addRole ( new CanRead ());
$ user -> can ( " read " ); // true
$ user -> can ( new Write ()); // true
$ user -> getRole ( " can_write " )
-> getPermission ( " write " )
-> status = Permission:: STATUS_DISABLED ;
$ user -> can ( new Read ()); // true
$ user -> can ( new Write ()); // false
$ user -> addRole ( new CanReadAndWrite ());
$ user -> can ( new Read ()); // true
$ user -> can ( new Write ()); // true because the priority of `CanReadAndWrite` is bigger than the `CanWrite` priority.