0

我知道如何显示带有条件的按钮,但是如果用户具有某种状态,我想要完全禁用主要操作。
如果我的用户具有员工状态,则他不能创建或删除其他用户,否则他可以。
我试图“显示是否”,但如果他破解了网址,他仍然可以执行此操作。

public function configureActions(Actions $actions): Actions
    {
      
        return $actions
            //Here I would like to add my condition
            ->disable(Action::DETAIL, Action::EDIT)
            // I tried this but this is not secure, he can hacks the url
            ->update(Crud::PAGE_INDEX, Action::NEW, fn (Action $action) => $action->setIcon('fa fa-plus')
                ->setLabel('admin.crud.user.button.add_contractor')
                ->displayIf(fn () => $user->getStatus() !== self::EMPLOYEE)
            )
    }

任何想法 ?

4

1 回答 1

0

我做了不同的事情。我使用我的条件创建了一个私有函数,并在 configureActions 中调用了它:

public function configureActions(Actions $actions): Actions
    {
        $this->disableActions($actions);

        return $actions
            //->disable(Action::DETAIL, Action::EDIT)
            ->update(Crud::PAGE_INDEX, Action::NEW, fn (Action $action) => $action->setIcon('fa fa-plus')
                ->setLabel('admin.crud.user.button.add_contractor')
            )

            ->update(Crud::PAGE_INDEX, Action::DELETE, fn (Action $action) => $action->setLabel('admin.crud.user.button.delete_profile')
                ->setIcon('fa fa-times')
            )
            ;
    }

    private function disableActions(Actions $actions): void
    {
        $contractor  = $this->getUser();

        $actions->disable(Action::DETAIL, Action::EDIT);

        if ($contractor->getStatus() === self::EMPLOYEE) {
            $actions->disable(Action::DELETE, Action::NEW);
        }
    }
于 2021-12-31T10:36:48.693 回答