Работа с авторизацией \ регистрацией пользователя в Битрикс
Последние записи
Генерация ссылок "Выйти" и "Регистрация"
if ($USER->IsAuthorized()){
<a href="<?echo $APPLICATION->GetCurPageParam("logout=yes", array(
"login",
"logout",
"register",
"forgot_password",
"change_password"));?>">Выйти</a>
}else{
<a href="<?echo $APPLICATION->GetCurPageParam("register=yes", array(
"login",
"logout",
"forgot_password",
"change_password"));?>">Регистрация</a>
}
Проверяем, является ли $password текущим паролем пользователя
/**
* Проверяем, является ли $password текущим паролем пользователя.
*
* @param int $userId
* @param string $password
*
* @return bool
*/
function isUserPassword($userId, $password)
{
$userData = CUser::GetByID($userId)->Fetch();
$salt = substr($userData['PASSWORD'], 0, (strlen($userData['PASSWORD']) - 32));
$realPassword = substr($userData['PASSWORD'], -32);
$password = md5($salt.$password);
return ($password == $realPassword);
}
За функцию спасибо Шокову Алексею
Проверяем пароль штатными средствами
$login = CUser::GetLogin(); //получаем логин текущего юзера
$USERcheck = new CUser;
$check = $USERcheck->Login($login, 'fsdfsfO', 'N', 'Y'); //проверяем верный ли пароль
print_r($check); //Если пароль верный, то вернет 1, в ином случае массив с ошибкой
Смена пароля пользователя
global $USER;
$arResult = $USER->ChangePassword("admin", "WRD45GT", "123456", "123456");
if($arResult["TYPE"] == "OK") echo "Пароль успешно сменен.";
else ShowMessage($arResult);
Валидация пароля средствами Битрикс
$policy = \CUser::GetGroupPolicy([3]); //Получаем политику безопасности для группы пользователей с id = 3
$password = 'gdf';//Проверяем удовлетворяет ли правилам Битрикс новый пароль
$user = new CUser; //CheckPasswordAgainstPolicy метод нестатический поэтому объявляем новый экземпляр класса CUser
$errors = user->CheckPasswordAgainstPolicy($password, $policy); //Если пароль подходит, то вернется пустой массив иначе в массиве будут перечислены все ошибки связанные с паролем
Боремся с проблемой конфликта сессий между основным сайтом и поддоменом
Добавляем в файл init.php
session_name(\Bitrix\Main\Config\Option::get('main', 'cookie_name') . '_PHPSESSID');
Сквозная авторизация на поддоменах
В первую очередь идем в настройки главного модуля и включаем опции
Распространять куки на все домены (только для https)
Распространять авторизацию на все домены (только для https)
Если авторизация до сих пор не работает, то смотрим настройки session.cookie_domain
в php.ini
Здесь нужно указать домен сайт без протокола и поддомена. Точка перед переменной обязательна
.domain.com
Интересно будет ознакомиться со статьей:
Комментарии