PhpBBIdentity — авторизация юзеров PhpBB3

Выкладываем свои наработки
Аватара пользователя
jedi
Сообщения: 82
Зарегистрирован: 2010.12.01, 08:49

Re: PhpBBIdentity — авторизация юзеров PhpBB3

Сообщение jedi »

интересно
joomla->drupal->yii
Аватара пользователя
jedi
Сообщения: 82
Зарегистрирован: 2010.12.01, 08:49

Re: PhpBBIdentity — авторизация юзеров PhpBB3

Сообщение jedi »

Не помогает (база MySQL)
RSol писал(а):Была у меня как-то такая проблема.

Как решил убей не помню... :-(

Попробуйте вот так:

Код: Выделить всё

public function init()
    {
        if(!$this->path)
            throw new CException("Don't set forum path");

        Yii::import($this->path.'/includes/utf/utf_normalizer.php');

        $this->_phpbb = new phpbbClass($this->path, $this->php);
    } 
вспомните пожалуйста
joomla->drupal->yii
Аватара пользователя
jedi
Сообщения: 82
Зарегистрирован: 2010.12.01, 08:49

Re: PhpBBIdentity — авторизация юзеров PhpBB3

Сообщение jedi »

Проблема в том, что экстеншн цепляет class User (от phpbb), но класс User уже используется в проекте. И тут ошибка возникает
joomla->drupal->yii
Аватара пользователя
Kuklovod
Сообщения: 211
Зарегистрирован: 2011.11.22, 08:15

Re: PhpBBIdentity — авторизация юзеров PhpBB3

Сообщение Kuklovod »

Может кто-нибудь подскажет как сделать совместную авторизацию Yii и phpBB?
swoop
Сообщения: 3
Зарегистрирован: 2012.09.10, 12:06

Re: PhpBBIdentity — авторизация юзеров PhpBB3

Сообщение swoop »

RSol, спасибо за расширение. Такой вопрос: у меня нормально работают функции: user_add, user_delete, change_password, user_update,
а с login, logout, loggedin проблемы. Что может быть причиной? Никаких ошибок я не получаю. Если при авторизации сделать:

Код: Выделить всё

echo Yii::app()->phpBB->login($this->username,$original_pas);
exit; 
Результат будет SUCCESS. Но при переходе в форум пользователь не авторизован.
Соответственно при logout - не выходит, а loggedin возвращает FAIL даже если я авторизовался напрямую через форум.
Аватара пользователя
RSol
Сообщения: 325
Зарегистрирован: 2010.05.07, 08:36
Откуда: Северодонецк, Украина
Контактная информация:

Re: PhpBBIdentity — авторизация юзеров PhpBB3

Сообщение RSol »

Я уже совсем не помню, что там было и как. И, к сожалению, совершенно нет времени на разбор полета. :-(

Мне часто пишут и в личку по поводу этого расширения, но ....

Попробуйте сами разобраться и потом отписать здесь, я буду преочень благодарен. :-)
swoop
Сообщения: 3
Зарегистрирован: 2012.09.10, 12:06

Re: PhpBBIdentity — авторизация юзеров PhpBB3

Сообщение swoop »

У меня проблемы возникали по двум причинам:
1) Неправильно настроенные куки на форуме ( неверно указанный домен)
2) Использование функции loggedin(). Если её не вызывать - всё работает отлично. Но при её вызове в куках изменяется ид юзера, и на форум попадаю неавторзованным. Думаю, эти строчки к этому причастны:

Код: Выделить всё

$this->init(false);
$user->session_begin();
Вместо loggedin() юзаю Yii::app()->user->isGuest
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: PhpBBIdentity — авторизация юзеров PhpBB3

Сообщение ElisDN »

RSol писал(а):Попробуйте сами разобраться и потом отписать здесь, я буду преочень благодарен. :-)
Набрался смелости и написал модуль для интеграции в Yii с использование вашего расширения.
Аватара пользователя
Zzevvsess
Сообщения: 100
Зарегистрирован: 2011.08.19, 21:19
Откуда: Уральск
Контактная информация:

Re: PhpBBIdentity — авторизация юзеров PhpBB3

Сообщение Zzevvsess »

Я вот так вышел из положения.

Код: Выделить всё

    $post_data = array(
        'username' => $arr[0],
        'password' => $arr[1],
        'autologin' => 1,
        'login' => 'Вход',
        'redirect' => 'index.php',
        'sid' => 'dae7a979b7814c37be6e0734af1acc4f',
        );
    
    $ch = curl_init();
    // Стандартные настройки
    curl_setopt($ch, CURLOPT_URL, 'http://'.$_SERVER['HTTP_HOST'].'/forum/ucp.php?mode=login');
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT,
        'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13');
    
    
    // указываем, что у нас POST запрос и передаем массив с данными
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    
    // получаем HTML в качестве результата
    $output = curl_exec($ch);
    // закрываем соединение 
    curl_close($ch);
    
    // Парс куков
    // Устанавливаю куки
            preg_match_all('#phpbb3_mr7se_k=([A-z0-9]+);#',$output,$out);
            foreach($out[1] as $item){
                setcookie('phpbb3_mr7se_k',$item,time()+(60*60*24*30),'/',$_SERVER['HTTP_HOST']);
            }
            preg_match_all('#phpbb3_mr7se_u=([A-z0-9]+);#',$output,$out);
            foreach($out[1] as $item){
                setcookie('phpbb3_mr7se_u',$item,time()+(60*60*24*30),'/',$_SERVER['HTTP_HOST']);
            }
            preg_match_all('#phpbb3_mr7se_sid=([A-z0-9]+);#',$output,$out);
            foreach($out[1] as $item){
                setcookie('phpbb3_mr7se_sid',$item,time()+(60*60*24*30),'/',$_SERVER['HTTP_HOST']);
            } 
frazelli
Сообщения: 54
Зарегистрирован: 2013.04.20, 07:38

Re: PhpBBIdentity — авторизация юзеров PhpBB3

Сообщение frazelli »

Sam Dark писал(а):Очень сырая, но всё-таки рабочая версия нестандартного UserIdentity для авторизации через базу PhpBB3.
PhpBBIdentity не работает с русскими никами. Пишет неправильное имя пользователя или пароль.
Как решить эту проблему?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: PhpBBIdentity — авторизация юзеров PhpBB3

Сообщение ElisDN »

frazelli писал(а):PhpBBIdentity не работает с русскими никами
А сам форум русские ники поддерживает?
frazelli
Сообщения: 54
Зарегистрирован: 2013.04.20, 07:38

Re: PhpBBIdentity — авторизация юзеров PhpBB3

Сообщение frazelli »

ElisDN писал(а):
frazelli писал(а):PhpBBIdentity не работает с русскими никами
А сам форум русские ники поддерживает?
Сам форум конечно поддерживает.

UPD: хм.. посмотрел что происходит с русскими никами в 'username_clean'. Почему их там так уродует?
Поменял в запросе на 'username' и убрал LOWER. Теперь работает.

Да, и в setRole нужно добавить что-то вроде

Код: Выделить всё

default:
    $role = 'user';
break;
 
Аватара пользователя
demisang
Сообщения: 159
Зарегистрирован: 2012.10.27, 15:03
Контактная информация:

Re: PhpBBIdentity — авторизация юзеров PhpBB3

Сообщение demisang »

Нашёл ошибочку, которая не позволяла открывать из админки форума раздел "профиль пользователя", ошибка заключается в том, что при использовании данного дополнения в файле ext.phpBB.phpbbClass.php line 136 устанавливался язык нового пользователя по-умолчанию "ro" (Румынский), а в таблице языков обычно отсутствует данный язык, в следствии чего была ошибка.
Аватара пользователя
RSol
Сообщения: 325
Зарегистрирован: 2010.05.07, 08:36
Откуда: Северодонецк, Украина
Контактная информация:

Re: PhpBBIdentity — авторизация юзеров PhpBB3

Сообщение RSol »

demisang писал(а):Нашёл ошибочку, которая не позволяла открывать из админки форума раздел "профиль пользователя", ошибка заключается в том, что при использовании данного дополнения в файле ext.phpBB.phpbbClass.php line 136 устанавливался язык нового пользователя по-умолчанию "ro" (Румынский), а в таблице языков обычно отсутствует данный язык, в следствии чего была ошибка.
Рецепт фикса есть?
Аватара пользователя
demisang
Сообщения: 159
Зарегистрирован: 2012.10.27, 15:03
Контактная информация:

Re: PhpBBIdentity — авторизация юзеров PhpBB3

Сообщение demisang »

RSol писал(а):Рецепт фикса есть?
в файле ext.phpBB.phpbbClass.php line 136:

Код: Выделить всё

//default user info
$user_row = array(
    "username" => $phpbb_vars["username"],
    "user_password" => phpbb_hash($phpbb_vars["password"]),
    "user_email" => $phpbb_vars["user_email"],
    "group_id" => !isset($phpbb_vars["group_id"]) ? "2" : $phpbb_vars["group_id"],
    "user_timezone" => "2.00",
    "user_dst" => 0,
    "user_lang" => "ro", // ТУТ LINE 136
    "user_type" => !isset($phpbb_vars["user_type"]) ? "0" : $phpbb_vars["user_type"],
    "user_actkey" => "",
    "user_dateformat" => "D M d, Y g:i a",
    "user_style" => "1",
    "user_regdate" => time(),
    "user_colour" => "9E8DA7",
); 
поменять строку:

Код: Выделить всё

"user_lang" => "ro"
на

Код: Выделить всё

"user_lang" => $phpbb_vars["user_lang"]
Потом в файле ext.phpBB.phpBB.php дополнить функцию userAdd():

Код: Выделить всё

public function userAdd($username, $password, $email, $group_id = 2) {
    return $this->_phpbb->user_add(array(
        "username"=>$username,
        "user_password"=>$password,
        "user_email"=>$email,
        "group_id"=>$group_id,
    ));
}
строкой

Код: Выделить всё

"user_lang"=>"ru"
Можете конечно в параметры функции userAdd() добавить $lang, можете сделать $this->defaultLang можно использовать Yii::app()->language
Ответить