加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php – 只允许作者使用ACF在yii2中编辑他的帖子

发布时间:2020-05-25 09:12:16 所属栏目:PHP 来源:互联网
导读:我使用访问控制过滤器进行访问管理,但无法完成一件事 – 例如,我如何才能让项目经理更新项目并禁止其他人?我通过matchCallback尝试了它,但在这种情况下,所有项目经理都可以更新任何项目,因为返回了TRUE. 类似的更常用的规则 – 如何允许用户使用ACF更新/删除

我使用访问控制过滤器进行访问管理,但无法完成一件事 – 例如,我如何才能让项目经理更新项目并禁止其他人?我通过matchCallback尝试了它,但在这种情况下,所有项目经理都可以更新任何项目,因为返回了TRUE.

类似的更常用的规则 – 如何允许用户使用ACF更新/删除他是作者的帖子?

'access' => [
            'class' => AccessControl::className(),'only' => ['index','view','create','update','delete'],'rules' => [
                [
                    'actions' => ['update'],'allow' => true,'roles' => ['@'],'matchCallback' => function ($rule,$action) {

                        return Yii::$app->user->identity->getProjectParticipants()
                                    ->one()->isManager(Yii::$app->user->identity->id);
                    }
                ],],
它可以实现如下:
use Yii;
use yiiwebController;
use yiifiltersAccessControl;

class MyController extends Controller
{

...

    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),'only' => ['update','rules' => [
                    [
                        'actions' => ['update',$action) {
                            if (Yii::$app->user->can('admin') || $this->isUserAuthor()) {
                                return true;
                            }
                            return false;
                        }
                    ],];
    }

    protected function findModel($id)
    {
        if (($model = MyModel::findOne($id)) !== null) {
            return $model;
        } else {
            throw new NotFoundHttpException('The requested page does not exist.');
        }
    }

    protected function isUserAuthor()
    {   
        return $this->findModel(Yii::$app->request->get('id'))->author->id == Yii::$app->user->id;
    }

...

}

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读