在symfony2中按对象状态访问角色

时间:2011-08-03 10:46:17

标签: workflow symfony

如何实现模型的复杂访问权限断言? 我有一个模特:

class Unit {
...
}


class Order {
    const STATUS_NEW         = 0;
    const STATUS_NEEDCONFIRM = 1;
    const STATUS_CONFIRMED   = 2;
    const StATUS_CLOSED      = 3;

    /* @Column(name="status", type="smallint") */
    public $status = 0;

    /**
     * @var Doctrine\Common\Collections\ArrayCollection <Unit>
     *
     * @OneToMany(
     *     targetEntity="Unit",
     *     mappedBy="order",
     *     cascade={"persist", "remove"}
     * )
     */
    public $units;
}

我有一个角色:ROLE_MANAGER,ROLE_OPERATOR

访问权限取决于订单$ status属性: ROLE_MANAGER以任何状态查看订单。 ROLE_OPERATOR只能使用STATUS_NEEDCONFIRM

添加单位和查看订单

状态变化: ROLE_MANAGER只能将订单状态从STATUS_NEW切换到STATUS_NEEDCONFIRM 和STATUS_CONFIRMED到STATUS_CLOSED

如果订单单元数>&gt;,则ROLE_OPERATOR只能将订单状态从STATUS_NEEDCONFIRM切换到STATUS_CONFIRMED。 0

symfony2有工作流程模块或示例吗?

1 个答案:

答案 0 :(得分:0)

我可能会创建一个service来获取OrderUser个实体,知道如何确定哪些角色具有哪些状态的权限,并为允许或拒绝返回true或false。

可以使用ACL system,但就广泛使用情况而言,它现在已经非常稀少了。如果你走这条路线,你需要在状态改变时更新ACE以提供(或获取)适当的权限,为此,你可能再次查看某种类型的服务。