我目前正在开展一个需要审核的项目。
有多组用户:
业务要求是,一旦CREATOR提交了REVIEW项目,他们就不能再编辑它了。
如何通过检查项目的STATUS是否为UNDER_REVIEW来禁用某些项目的编辑?
答案 0 :(得分:0)
标准方法是使用ACL,如Sonata Admin Security docs。
中所述总结:
选民
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
}
}
//...
}