リリース前にテストを行う場合に、特定のipからのアクセスのみログインできる様にしたい
$request->ip();でipを取得できる
public function test(Request $request){ $ip = [ ['name'=>'a社 事業部', 'ip' => '127.0.0.1'], ['name'=>'a社 開発部', 'ip' => '127.0.0.2'], ['name'=>'b社', 'ip' => '127.0.0.3'], ['name'=>'myIP', 'ip' => '192.168.33.1'], ]; $user_ip = $request->ip(); $detect = collect($ip)->contains('ip', $request->ip()); dd($detect); return view('admin.test'); }
-> true
これをmiddlewareのrole_idの制御しているところで実装する。
public function handle(Request $request, Closure $next) { $user = Auth::user(); if(!$user->isAdmin()){ $ip = [ ['name'=>'a社 事業部', 'ip' => '127.0.0.1'], ['name'=>'a社 開発部', 'ip' => '127.0.0.2'], ['name'=>'b社', 'ip' => '127.0.0.3'], ['name'=>'myIP', 'ip' => '192.168.33.1'], ]; $user_ip = $request->ip(); $detect = collect($ip)->contains('ip', $request->ip()); if(!$detect){ Auth::logout(); return redirect('/login')->withErrors(array('name' => 'ただ今ログインできません。')); } return redirect()->intended('/hoge'); } return $next($request); }
-> ただ今ログインできません。
なかなかテクニカルになってきた。