Хотелось бы обратить особенное внимание на то, что IIS + домен чаще всего присутствует на работе - в фирме, предприятии и т.д., поэтому самостоятельную регистрацию на сайте доверить пользователю скорее всего не получится, редко кто из системных администраторов на это отважится...
Как я предлагаю реализовать в данном случае работу данного сайта в "корпоративной среде"?
1. Мы используем обязательный искусственный автологон пользователя в сайт, дабы мы могли иметь полный контроль над посетителем-пользователем.
2. Мы запрещаем пользователю менять свое имя, адрес, ... - поля в профиле, предварительно изменив в templates файл userinfo.tpl.
Как тогда регистрировать пользователей?
В любом случае Вы будете вынуждены использовать свои собственные средства для заполнение полей в профиле пользователя.
Вы сделаете это единоразово или можете делать это раз в день - все зависит от кличества работников в Вашей организаации и частоте их смены. Возможно все за Вас сделает Вами написанный скрипт, выполняемый при первом посещении сайта новым пользователем. Как это сделать - можете решить только Вы.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. в engine/data/config.php в самом конце перед
?>
добавить
// Используется IIS & Windows Authorization
$iis_wa = true;
// Имя домена Windows + 1 или 2 слеша в зависимости от версии PHP - смотреть в phpinfo() в поле $_SERVER["AUTH_USER"]
$my_domen = "GROUP\\";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2. в engine/modules/sitelogin.php перед
$_POST['login_name'] = mysql_escape_string($_POST['login_name']);
добавить
if($iis_wa) $_POST['login_name'] = str_replace($my_domen, "", $_SERVER["AUTH_USER"]);
else
3. в engine/modules/sitelogin.php перед
$member_id = $db->super_query("SELECT * FROM " . PREFIX . "_users where name='{$_POST['login_name']}' and password='".md5($_POST['login_password'])."'");
добавить
if($iis_wa) $member_id = $db->super_query("SELECT * FROM " . PREFIX . "_users where name='{$_POST['login_name']}'");
else
4. в engine/modules/sitelogin.php после
$is_logged = TRUE;
}
добавить
else {
$add_time = time()+($config['date_adjust']*60);
if($_SERVER['HTTP_X_FORWARDED_FOR']) $_IP = $db->safesql($_SERVER['HTTP_X_FORWARDED_FOR']); else $_IP = $db->safesql($_SERVER['REMOTE_ADDR']);
// Сюда пишем все запросы к сторонним базам данных для сбора информации о пользователе, главное чтобы прав хватило (запрос пойдет от имени пользователя).
$db->query("INSERT INTO " . PREFIX . "_users (name, password, email, reg_date, lastdate, user_group, logged_ip) VALUES ('$_POST['login_name']', '', '$_POST['login_name']@$my_domen', '$add_time', '$add_time', '".$config['reg_group']."', '".$_IP."')"); }
5. в engine/modules/sitelogin.php перед
if (isset($_POST['login']) AND !$is_logged) {
добавить
if($iis_wa) $_POST['login'] = "submit";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6. в admin.php перед
$username = $_POST['username'];
$cmd5_password = md5($_POST['password']);
добавить
if($iis_wa) $username = str_replace($my_domen, "", $_SERVER["AUTH_USER"]);
else
7. в admin.php заменить
if(check_login($username, $cmd5_password))
на
if(check_login($username, $cmd5_password, $iis_wa))
8. в admin.php перед
if($_REQUEST['action'] == 'dologin') {
добавить
if($iis_wa) $_REQUEST['action'] = 'dologin';
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9. в engine/inc/functions.inc.php заменить
function check_login($username, $md5_password){
global $member_db, $db, $user_group, $lang, $domain;
if ($username == "" OR $md5_password == "") return false;
на
function check_login($username, $md5_password, $iis_wa){
global $member_db, $db, $user_group, $lang, $domain;
if ((!$iis_wa) AND ($username == "" OR $md5_password == "")) return false;
10. в engine/inc/functions.inc.php перед
$db->query("SELECT * FROM " . PREFIX . "_users where name='$username' and password='$md5_password' and banned != 'yes'");
добавить
if($iis_wa) $db->query("SELECT * FROM " . PREFIX . "_users where name='$username' and banned != 'yes'");
else
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Теперь все готово и если мы в engine/data/config.php закомментируем
$iis_wa = true;
или поставим false, то будет работать прежняя схема авторизации.
Вопросы? :fellow:
Комментарии