2017 © Pedro PelΓ‘ez
 

library zfs-rbac

image

zfstarter/zfs-rbac

  • Thursday, April 2, 2015
  • by farior2109
  • Repository
  • 0 Watchers
  • 0 Stars
  • 60 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

zfs-rbac

ΠžΠ±Π΅Ρ€Ρ‚ΠΊΠ° Π½Π° Zf2\Rbac для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ использования Π² ZF2/ZFStarter ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, (*1)

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

БСрвис ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Π²Π°ΠΌ остаСтся лишь Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ имя Π² список ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² application.config.php:, (*2)

'modules' => array(
        'ZFS\Rbac', // <--
        'Application'
    ),

Настройка Ρ‡Π΅Ρ€Π΅Π· события

ΠœΠΎΠ΄ΡƒΠ»ΡŒ содСрТит сСрвис ZFS\Rbac\Rbac, ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ прСдставлСния isGranted ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° isGranted., (*3)

Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвиса, ΠΎΠ½ выбрасываСт 2 события: - EVENT_GET_CONFIG (ZFS\Rbac\Service\Event\GetConfig) - EVENT_GET_USER_ROLES (ZFS\Rbac\Service\Event\GetUserRoles), (*4)

EVENT_GET_CONFIG ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ срСды ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Ρ€ΠΎΠ»Π΅ΠΉ ΠΈ ΠΈΡ… Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ подписавшись Π½Π° событиС:, (*5)

$this->getEventManager()->getSharedManager()->attach(
    ZFS\Rbac\Rbac::EVENT_MANAGER_IDENTIFIER,
    ZFS\Rbac\Rbac::EVENT_GET_CONFIG,
    function () {
        return array(
            'user' => array(
                'permissions' => array(
                    'login'
                )
            ),
            'users_manager' => array(
                'permissions' => array(
                    'modify_users'
                )
            ),
            'admin' => array(
                'children' => array(
                    'users_manager'
                )
            )
        );
    }
);

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ массив ΠΈΠ· Ρ€ΠΎΠ»Π΅ΠΉ (ΠΊΠ»ΡŽΡ‡) ΠΈ Π΅Π³ΠΎ настройкой (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅). Π‘Ρ€Π΅Π΄ΠΈ настроСк ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ массив ΠΈΠ· самих Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ (ΠΊΠ»ΡŽΡ‡ permissions) ΠΈ массив ΠΈΠ· Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… Ρ€ΠΎΠ»Π΅ΠΉ (ΠΊΠ»ΡŽΡ‡ children)., (*6)

EVENT_GET_USER_ROLES ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ список Ρ€ΠΎΠ»Π΅ΠΉ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ подписавшись Π½Π° событиС:, (*7)

$this->getEventManager()->getSharedManager()->attach(
    ZFS\Rbac\Rbac::EVENT_MANAGER_IDENTIFIER,
    ZFS\Rbac\Rbac::EVENT_GET_USER_ROLES,
    function () {
        return array('admin');
    }
);

Оба события ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ нСсколько ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² дополняя массивы ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ…. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ для Π½Π΅Π³ΠΎ способом: выбирая Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π‘Π”, ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π° с настройками., (*8)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования:

  • Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅:
class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        if (!$this->isGranted('index_action')) {
            return $this->notFoundAction();
        }
        /* ... */
    }
}
  • Π² шаблонС прСдставлСния:
<?php if ($this->isGranted('buy')): ?>
    <a href="/buy">Buy</a>
<?php else: ?>
    <a href="/login">Login to buy</a>
<?php endif; ?>
  • Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ доступ ΠΊ ServiceLocator:
$this->getServiceLocator()->get('ZFS\Rbac\Rbac')->isGranted('some_permission');

Π’ΠΎ всСх Ρ‚Ρ€Π΅Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ isGranted ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ строку с ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ массив ΠΈΠΌΡ‘Π½ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π±ΡƒΠ»Π΅Π²Ρ‹ΠΉ Ρ„Π»Π°Π³, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° Π½Π°Π΄ΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° события EVENT_GET_USER_ROLES. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, стоит Π² false., (*9)

ЛицСнзия

MIT, (*10)

The Versions