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 上に掲載しています。