如果未分配用户,则阻止对路由项的访问

时间:2017-11-21 14:19:49

标签: php laravel laravel-5

我试图阻止登录用户的ID与他尝试编辑的对象的路径不同的路线。

示例:

我负责管理分配给我的不同建筑物" user_id"在数据库中(在构建表中)。我是恶魔,我想改变我不介意的建筑物。通过获取URL,我可以去修改敌人的建筑。

我在模型Building

中创建了一个关系
  public function owner()
  {
   return $this->belongsTo(User::class, 'id', 'user_id');
  }

和中间件

use App\Models\Building;
use Closure;
use Auth;

class CheckOwnItem
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ( Auth::id() != Building::class->user_id){
          abort(403);
        }
        return $next($request);
    }
}

当我想使用中间件' building'访问我的路线时,我有一个错误。我认为我无法正确访问建筑物的数据。怎么办?

Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR)

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要检索建筑物实例,然后进行检查。

这样的事情可能是:

public function handle($request, Closure $next)
{
    $building = Building::find($request->id);

    if ( Auth::id() != $building->user_id){
      abort(403);
    }
    return $next($request);
}