Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
- А при регистрации пароль пользователя в таблицу форума сохраняется с помощью pun_hash?
Да, я просто вытащил кусок кода, который вставляет строку в БД при регистрации, из FluxBB.
- И еще вопрос, если делаешь редирект на основной движок при авторизации, тогда вот это всё уже в основном движке определяешь?)
«Вот это всё» это что? Я ставлю две cookie — одну свою, одну для форума. Своя cookie — стандартная авторизация для Laravel. Теоретически можно удалить одну cookie, таким образом авторизация сломается (т.е. будешь авторизован только на форуме или только в движке), но это надо делать специально. В обычном случае обе истекают одновременно, по крайней мере я проблем у себя не наблюдал.
- Новый участник:
- Участников в онлайне:
- Гостей в онлайне:
- Сейчас на форуме
Это считает FluxBB, я здесь никакой код не дописывал.
- Кстати, этот сайт же на laravel?
Да.
Не в сети
Спасибо за ответы. Попробую разобраться
Не в сети
единая авторизация и регистрация по таблице БД форума?
Таблицы разные. Основной движок сайта имеет свою, форум — свою (стандартную); движок поддерживает обе таблицы в одинаковом состоянии. Для этого страницы FluxBB, связанные с авторизацией и редактированием профиля, делают редирект на страницы основного сайта, где обновляются обе таблицы.При авторизации на сайте одновременно ставится и cookie FluxBB, для этого подключается один из его скриптов и вычисляется значение:
PHPdefine("PUN_ROOT", "...");
require_once PUN_ROOT."include/common.php";
pun_setcookie($user->id, pun_hash($password), time() + $expire);Это проще, чем делать единую таблицу — если использовать форумную, то там нет нужных полей для основного сайта (а если их добавлять, то будет сложно делать обновление), а если свою, то придётся переписывать половину движка FluxBB.
Возник вопрос, а в каком месте проставляете этот куки?
Я пробую это сделать в методе authenticated в LoginController, но получается что файл common.php подтягивает за собой functions.php, возникает конфликт вот с этими функциями, которые уже определены в lar’e: redirect() и dump(), ошибка cannot redeclare. Попытался их обойти с помощью следующей конструкции:
if (!function_exists('redirect') {
function redirect(...) {}
}
Call to a member function query() on null
in C:\OpenServer\domains\mydomen.loc\forum\include\functions.php line 275
На этой строке идет получение гостя из бд: //fetch user guest. Я иду в том направлении?
laravel установлен на mydomen.loc, а форум в mydomen.loc/forum.
Изменено sergeybatmanov (08.05.2017 08:18:43)
Не в сети
- Я пробую это сделать в методе authenticated в LoginController
Для этого, увы, приходится редактировать файлы фреймворка. У меня форум подключается в bootstrap/autoload.php:
<?php $path = 'forum'; define("PUN_ROOT", dirname(__DIR__)."/public/$path/"); require_once PUN_ROOT."include/common.php"; // дальше стандартный код Laravel define('LARAVEL_START', microtime(true)); ...
Не в сети
}%> Я пробую это сделать в методе authenticated в LoginController
Для этого, увы, приходится редактировать файлы фреймворка. У меня форум подключается в bootstrap/autoload.php:
%%
<?php
$path = 'forum';
define("PUN_ROOT", dirname(__DIR__)."/public/$path/");
require_once PUN_ROOT."include/common.php";// дальше стандартный код Laravel
define('LARAVEL_START', microtime(true));
...
%%
хмм, а что тогда делать с функцией redirect? Если таким образом загрузить common.php, то функция redirect() берется из файла functions для всего приложения, тогда в laravel некорректно работает redirect, а если убрать из functions.php эту функцию, тогда форум начинает некорректно работать. Поправьте меня, если я что то не так говорю, но у меня пока получается так.
Не в сети
- хмм, а что тогда делать с функцией redirect?
Использовать только фасады (Redirect::to() и пр.). Более сложный вариант — разделить авторизацию на две части, то есть после успешной авторизации на сайте перекидывать клиента на страницу, где делается авторизация на форуме (передавать секретный токен) без использования Laravel, либо без редиректа вызывать скрипт через system(). Обычно на сайтах применяется первый вариант.
Ещё можно просто скопировать нужные функции из FluxBB и переименовать, но он трудоёмкий и костыльный.
Так как у меня есть возможность контролировать код на laravel.ru, то я выбрал самый простой вариант — не использовать (часть) глобальных helper-функций Laravel.
Не в сети