2017-11-21 10 views
0

ログオンしているユーザーの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); 
    } 
} 

に関係を作成し、私はエラーを持っています。私は自分の建物のデータに正しくアクセスしていないと思う。実行する方法 ?

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

ありがとう!

+1

'ビル:: class'は、文字列型で、反対しません。 – Chay22

答えて

1

ビルディングインスタンスを取得してから、チェックを行う必要があります。多分このような

何か:

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

    if (Auth::id() != $building->user_id){ 
     abort(403); 
    } 
    return $next($request); 
} 
関連する問題