Novius OS でログイン可能なリモートホスト(IP)を限定する方法です。
Novius OS のデフォルトでは、ログインできるIPアドレスを限定していません。不特定多数のユーザーがログインする場合は、この設定にせざるを得ないかもしれません。しかし、ログインするユーザーが決まっている場合は、ログインできるIPアドレスを限定してしまっても問題無いでしょう。ということで、ログインできるIPアドレスを制限するコードを書いてみました。
下記のコードを、local/bootstrap.php
に貼付ければOKです。
<?php // Copyright Fumito MIZUNO 2014 // License : AGPL ver3.0 or later // Event On login success \Event::register('admin.loginSuccess', 'disconnect_from_invalid_ip'); \Event::register('admin.loginSuccessWithCookie', 'disconnect_from_invalid_ip'); // invalid ip user will be redirected function disconnect_from_invalid_ip() { if (!is_allowed_ip(\Input::ip())) { \Nos\Auth::disconnect(); \Response::redirect('/'); } } // check the IP function is_allowed_ip($ip) { $valid_ips = array('127.0.0.1', '192.168.33.10'); if (in_array($ip, $valid_ips)) { return true; } else { return false; } }
$valid_ipsで指定するIPアドレスを自分のものに置き換えれば、指定したIP以外からのログインを不許可にする(ログインしても即座にログアウトする)ことができます。
admin.loginSuccessとadmin.loginSuccessWithCookieというイベントにフックして動作させています。イベントは、FuelPHP自体に実装されている機能です。Novius OSでもこの機能が使えるため、Novius OSはカスタマイズしやすいです。
もう少し機能追加したものをgithub 上に掲載しています。