IP пользователя можно получить так: Yii::$app->request->getUserIP();
Проверку IP можно сделать добавив фильтр AccessManager в bootstrap
web.php:
$config = [
...
'bootstrap' => [
\app\components\user\AccessManager::class
],
AccessManager:
namespace app\components\user;
use yii\base\Component;
use Yii;
class AccessManager extends Component
{
const ERROR_PAGE = 'site/error';
public function init()
{
if (isset(Yii::$app->user) && !Yii::$app->user->isGuest) {
$this->filtering();
}
}
protected function filtering()
{
$user = Yii::$app->user->identity;
$allowedIps = $user->getAllowedIps();
if (!in_array(Yii::$app->request->getUserIP(), $allowedIps)) {
Yii::$app->catchAll = [self::ERROR_PAGE];
}
}
}