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



我正在尝试阻止一条路由,其中记录的用户的ID与他要编辑的对象的路由不同。

示例:

我负责使用数据库中的密钥" user_id"分配给我的不同建筑物(在构建表中)。我是恶魔般的,我想去改变我不介意的建筑物的纸张。通过使用URL,我可以去修改敌人的建造。

我在模型Building

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

和一个中间件

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

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

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

谢谢!

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

也许是这样的东西:

public function handle($request, Closure $next)
{
    $building = Building::find($request->id);
    if ( Auth::id() != $building->user_id){
      abort(403);
    }
    return $next($request);
}

最新更新