我在DocumentsController
中有此方法,并且正在尝试实现一些简单的权限系统,因为在添加,编辑或删除{之前,必须为非管理员用户分配一个分支和一个部门。 {1}}。
这是该方法的代码
Document
这是在映射到路由 /**
* Check the credentials of the user that is not an admin
* to add, modify a document
*/
private function checkCredentials() {
$user = auth()->user();
// dd((!is_admin() && !$user->branch_id && !$user->department_id));
if (!is_admin() && !$user->branch_id && !$user->department_id) {
// dd(redirect()->route('documents'));
return redirect()->route('documents')->with([
'class' => 'alert-danger',
'message' => 'Ask your administrator to assign you a branch and department first',
]);
}
}
的我的一种控制器方法中如何调用它
Route::get('/documents/add', ['as' => 'documents.add', 'uses' => 'DocumentsController@create',]);
问题是重定向无法继续进行,因为它继续显示表单,即使尚未为用户分配分支或部门,也就是public function create()
{
$this->checkCredentials();
...
return view('main/documents/create', $data);
}
和branch_id
都被使用时等于department_id
。
这可能是什么原因?谢谢。
答案 0 :(得分:1)
您没有从控制器返回重定向,请尝试以下操作:
/**
* Check the credentials of the user that is not an admin
* to add, modify a document
*/
private function checkCredentials() {
$user = auth()->user();
// dd((!is_admin() && !$user->branch_id && !$user->department_id));
if (!is_admin() && !$user->branch_id && !$user->department_id) {
// dd(redirect()->route('documents'));
return false;
}
}
public function create()
{
if(!$this->checkCredentials()) {
return redirect()->route('documents')->with([
'class' => 'alert-danger',
'message' => 'Ask your administrator to assign you a branch and department first',
]);
}
...
return view('main/documents/create', $data);
}