【问题标题】:Laravel 5.4 hide something from other usersLaravel 5.4 对其他用户隐藏某些东西
【发布时间】:2019-01-05 02:32:01
【问题描述】:

我正在开发一个应用程序,用户在该应用程序中分配了项目,他可以在他的网站上看到这些项目。单击给定项目后,它会移动到该项目的页面,其中 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');

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    在你的控制器顶部试试这个:

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

    【讨论】:

    • 需要添加使用 Illuminate\Support\Facades\Auth;也在顶部
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多