ระบบสาธารณูปโภคระบบการเข้าถึงตามบทบาทของ 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 );
}
}บทบาทคือคอนเทนเนอร์ของการอนุญาตที่หลากหลาย
Class AlexyaRolesRole แสดงถึงบทบาทด้วยตัวเอง
มันมีตัวระบุสำหรับบทบาทชื่อและอาร์เรย์ของ Permission อนุญาตที่ได้รับอนุญาตสำหรับบทบาทนี้ อีกทางเลือกหนึ่งบทบาทสามารถมีบทบาทหลักสำหรับการสืบทอด
นอกจากนี้ยังมีจำนวนเต็มที่แสดงถึงความสำคัญของบทบาทยิ่งมีจำนวนมากขึ้นเท่าไหร่ก็ยิ่งมีความสำคัญมากที่สุด
วิธีการ hasPermission ยอมรับตัวระบุการอนุญาตหรือตัวอย่างของการอนุญาตและตรวจสอบว่าบทบาทนี้ได้รับอนุญาตโดยได้รับอนุญาต
สำหรับเวอร์ชันที่สั้นกว่าคุณสามารถใช้ can 'cuz สั้นกว่า> อีกต่อไป
ตัวอย่าง:
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.