リリース前にテストを行う場合に、特定の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);
}
-> ただ今ログインできません。
なかなかテクニカルになってきた。















