我目前正在做一个项目,其中适度是要求。
有多个用户组:
业务需求是,一旦创建者提交了项目供评审,他们就不能再编辑它了。
如何通过检查项目的状态是否为UNDER_REVIEW来禁用对某些项的编辑?
发布于 2014-10-13 08:16:38
标准的方法是使用ACL,正如Sonata管理安全文档所描述的那样。
总结如下:
选民
public function vote(TokenInterface $token, $object, array $attributes)
{
//...
foreach ($attributes as $attribute) {
if ($this->supportsAttribute($attribute) && $object instanceof Item) {
if $attribute == 'EDIT' && ($token->getUser()->hasRole('ROLE_CREATOR') && $object->getStatus() == 'UNDER_REVIEW')
return self::ACCESS_DENIED;
}
if (($token->getUser()->hasRole('ROLE_ADMIN') {
return self::ACCESS_GRANTED;
}
//etc etc
}
}
//...
}https://stackoverflow.com/questions/26333529
复制相似问题