Laravel 5.4隐藏其他用户的东西

时间:2018-07-28 00:02:17

标签: php laravel

我正在开发一个应用程序,该应用程序向用户分配了项目,他可以在他的网站上看到该项目。单击给定项目后,将其移至该项目的页面,其中的URL看起来像./project/22-22是该项目的ID。问题是,进入搜索引擎(例如/ project / 22)的另一个用户可以看到该项目,即使未为其分配该项目。我还有一个数据透视表,用于存储项目ID和用户ID。这是我显示项目的代码: 控制器:

public function projects($id)
    {
        $project = Project::findOrFail($id);
       return view('pages.project')->with('project', $project);
    }

项目模型:

public function users()
    {
        return $this->belongsToMany('App\User')->withTimestamps();
    }

用户模型:

public function projects()
    {
        return $this->belongsToMany('App\Project')->withTimestamps();
    }

web.php:

 Route::get('/projects/{id}', 'PagesController@projects');

1 个答案:

答案 0 :(得分:0)

在控制器顶部尝试以下操作:

$project = Project::findOrFail($id);
if (!$project->users->where('id', Auth::user()->id)->first()) {
    App::abort(403, 'You cannot view this project.');
}