Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#26 07.05.2017 20:10:30

Re: Форум для Laravel

  1. А при регистрации пароль пользователя в таблицу форума сохраняется с помощью pun_hash?

Да, я просто вытащил кусок кода, который вставляет строку в БД при регистрации, из FluxBB.

  1. И еще вопрос, если делаешь редирект на основной движок при авторизации, тогда вот это всё уже в основном движке определяешь?)

«Вот это всё» это что? Я ставлю две cookie — одну свою, одну для форума. Своя cookie — стандартная авторизация для Laravel. Теоретически можно удалить одну cookie, таким образом авторизация сломается (т.е. будешь авторизован только на форуме или только в движке), но это надо делать специально. В обычном случае обе истекают одновременно, по крайней мере я проблем у себя не наблюдал.

  1. Новый участник:
  2. Участников в онлайне:
  3. Гостей в онлайне:
  4. Сейчас на форуме

Это считает FluxBB, я здесь никакой код не дописывал.

  1. Кстати, этот сайт же на laravel?

Да.

Не в сети

#27 07.05.2017 20:21:13

sergeybatmanov
Откуда: test
Сообщений: 6

Re: Форум для Laravel

Спасибо за ответы. Попробую разобраться

Не в сети

#28 08.05.2017 08:14:36

sergeybatmanov
Откуда: test
Сообщений: 6

Re: Форум для Laravel

единая авторизация и регистрация по таблице БД форума?
Таблицы разные. Основной движок сайта имеет свою, форум — свою (стандартную); движок поддерживает обе таблицы в одинаковом состоянии. Для этого страницы FluxBB, связанные с авторизацией и редактированием профиля, делают редирект на страницы основного сайта, где обновляются обе таблицы.

При авторизации на сайте одновременно ставится и cookie FluxBB, для этого подключается один из его скриптов и вычисляется значение:

PHP
  define("PUN_ROOT""...");
  require_once 
PUN_ROOT."include/common.php";
  
pun_setcookie($user->idpun_hash($password), time() + $expire);

Это проще, чем делать единую таблицу — если использовать форумную, то там нет нужных полей для основного сайта (а если их добавлять, то будет сложно делать обновление), а если свою, то придётся переписывать половину движка FluxBB.

Возник вопрос, а в каком месте проставляете этот куки?
Я пробую это сделать в методе authenticated в LoginController, но получается что файл common.php подтягивает за собой functions.php, возникает конфликт вот с этими функциями, которые уже определены в lar’e: redirect() и dump(), ошибка cannot redeclare. Попытался их обойти с помощью следующей конструкции:

PHP
if (!function_exists('redirect') {
 function 
redirect(...) {}
}

Но тогда возникает ошибка:

PHP
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)

Не в сети

#29 08.05.2017 10:35:44

Re: Форум для Laravel

  1. Я пробую это сделать в методе 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));
...

Не в сети

#30 08.05.2017 12:00:40

sergeybatmanov
Откуда: test
Сообщений: 6

Re: Форум для Laravel

Proger_XP пишет:

}%> Я пробую это сделать в методе 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 эту функцию, тогда форум начинает некорректно работать. Поправьте меня, если я что то не так говорю, но у меня пока получается так.

Не в сети

#31 08.05.2017 14:13:27

Re: Форум для Laravel

  1. хмм, а что тогда делать с функцией redirect?

Использовать только фасады (Redirect::to() и пр.). Более сложный вариант — разделить авторизацию на две части, то есть после успешной авторизации на сайте перекидывать клиента на страницу, где делается авторизация на форуме (передавать секретный токен) без использования Laravel, либо без редиректа вызывать скрипт через system(). Обычно на сайтах применяется первый вариант.

Ещё можно просто скопировать нужные функции из FluxBB и переименовать, но он трудоёмкий и костыльный.

Так как у меня есть возможность контролировать код на laravel.ru, то я выбрал самый простой вариант — не использовать (часть) глобальных helper-функций Laravel.

Не в сети

Подвал раздела