Коллеги, доброго времени суток.
Очень очень необходимо Ваше профессиональное мнение.
Задача в том, чтобы выполнять проверку, является ли пользователь локальным, и если 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 запросов.
Очень жду мнений, основанных на личном опыте, а если есть более тривиальное решение, буду рад увидеть...
Заранее огромное Вам спасибо!
