Коллеги, доброго времени суток.
Очень очень необходимо Ваше профессиональное мнение.
Задача в том, чтобы выполнять проверку, является ли пользователь локальным, и если true, то выдавать ему только определенный контент, ИНАЧЕ, выдавать другой.
Чтобы на каждой странице не делать проверку по ip, решил действовать через обработчик событий с записью в массив текущего пользователя.
В файл init.php поместил обработчик событий "OnAfterUserLogin", в котором проверяю пользователя по ip и в случае, если пользователь локальный, записывает ему одно значение в свойство UF_AUTH_TYPE типа "список", а если внешний, другое:
Затем, где нужно выводить контент, выполняю проверку по значению свойства, например:
В итоге, как по Вашему мнению будет быстрее и правильнее, выводить проверку по ip на каждой странице, где нужно делить контент, или один раз по событию авторизации, а затем проверка по свойству??
Принять в учет еще можно, что пользователей примерно 200 и они регулярно ходят на портал по NTLM. При этом контент, например, телефонная книга на основе инфоблока, где фотографии выводятся через ссылку на exchange, которая работает только из внутренней сети, а значит на одной странице может быть до 100 запросов.
Очень жду мнений, основанных на личном опыте, а если есть более тривиальное решение, буду рад увидеть...
Заранее огромное Вам спасибо!
Очень очень необходимо Ваше профессиональное мнение.
Задача в том, чтобы выполнять проверку, является ли пользователь локальным, и если true, то выдавать ему только определенный контент, ИНАЧЕ, выдавать другой.
Чтобы на каждой странице не делать проверку по ip, решил действовать через обработчик событий с записью в массив текущего пользователя.
В файл init.php поместил обработчик событий "OnAfterUserLogin", в котором проверяю пользователя по ip и в случае, если пользователь локальный, записывает ему одно значение в свойство UF_AUTH_TYPE типа "список", а если внешний, другое:
Код |
---|
<?php AddEventHandler("main", "OnAfterUserLogin", array("OnAfterUserLogin", "OnAfterUserLoginHandler")); class OnAfterUserLogin { function OnAfterUserLoginHandler(&$arFields) { $user = new CUser; if (preg_match("~^(192\.168\.|10\.0\.109\.)~", $_SERVER["REMOTE_ADDR"])) { $user->Update($arFields["USER_ID"], array("UF_AUTH_TYPE" => 15)); //Local } else { $user->Update($arFields["USER_ID"], array("UF_AUTH_TYPE" => 16)); //External } } } ?> |
Затем, где нужно выводить контент, выполняю проверку по значению свойства, например:
Код |
---|
<? $rsUser = CUser::GetByID($USER->GetID()); $arUser = $rsUser->Fetch(); if ($arUser["UF_AUTH_TYPE"] == 15) { echo "1"; } else { echo "2"; } ?> |
В итоге, как по Вашему мнению будет быстрее и правильнее, выводить проверку по ip на каждой странице, где нужно делить контент, или один раз по событию авторизации, а затем проверка по свойству??
Принять в учет еще можно, что пользователей примерно 200 и они регулярно ходят на портал по NTLM. При этом контент, например, телефонная книга на основе инфоблока, где фотографии выводятся через ссылку на exchange, которая работает только из внутренней сети, а значит на одной странице может быть до 100 запросов.
Очень жду мнений, основанных на личном опыте, а если есть более тривиальное решение, буду рад увидеть...
Заранее огромное Вам спасибо!