madlines/common-security-resolver

基于投票器的简单访问解析器

1.1 2016-02-27 15:01 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:26:49 UTC


README

Build Status

这是一个非常简单的基于投票器的安全解析器。它获取一组以中间件方式工作的投票者列表,并公开一个isGranted方法,可以询问投票者用户是否可以执行指定的任务。

投票者不需要实现任何接口。为了使这个库更通用,它使用鸭子类型。投票者需要是对象,并实现一个名为您喜欢的公共方法。

任务可以是任何您喜欢的。这些可以是对象或只是字符串。这取决于您的投票者是否支持它。

用法

准备一个这样的投票者

<?php

class PostEditVoter
{
    public function isGranted($user, $task)
    {
        // if (!($task instanceof PostEditTask)) {
        if ($task !== 'post_edit') {
            return null; // null means 'ignore'
            // returning integer 0 means the same
        }

        if ($user->hasRole('ROLE_ADMIN')) {
            return true; // agree
            // returning integer 1 means the same
        }

        return false; // disagree
        // returning integer -1 means the same
    }
}

创建一个AccessResolver实例并向其中添加投票者

$postEditVoter = new PostEditVoter();
// create more voters if you like

$resolver = new AccessResolver();

$resolver->addVoter($postEditVoter); // You can pass method name as second parameter. It defaults to `isGranted`
// add more voters if you like

从某处获取您的用户

$user = $this->getUser();

并像这样请求权限

$resolver->isGranted($user, 'post_edit');
// or maybe $resolver->isGranted($user, $postEditTask);