Laravel по-русски

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

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

#1 Laravel 5.x » Выбор данных в модели по типу публичности » 10.05.2017 07:55:59

sergeybatmanov
Ответов: 0

Версия Laravel: 5.4 
Версия PHP: 5.6

Задача, что должно происходить _в целом_, техническое задание:
    Добрый день. Подскажите, как правильнее осуществить видимость публикаций, например новостей, на сайте.
Т.е. есть два варианта:
1. показывать только зарегистрированным пользователям
2. Показывать всем

В БД допустим это записывается в столбец is_public, 1-показывать всем, 0-только зар. пользователям. По умолчанию ставится 1.

Моделей таких существует несколько и в каждой необходимо осуществить этот функционал. Каким образом это правильнее организовать? Насколько я понимаю, проверять, вошел ли пользователь в систему, я должен в методе модели, а не в контроллере? И как применить это ко всем необходимым моделям? использовать трейт?

Сейчас это осуществлено, и неправильно, в каждой модели прописано по два метода (выбор для зарегистр. и незарегистр.) и в контроллере проверяется, вошел ли пользователь в систему.

Спасибо за идеи.

#2 Re: Общий раздел » Форум для Laravel » 08.05.2017 12:00:40

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

#3 Re: Общий раздел » Форум для Laravel » 08.05.2017 08:14:36

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

#4 Re: Общий раздел » Форум для Laravel » 07.05.2017 20:21:13

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

#5 Re: Общий раздел » Форум для Laravel » 07.05.2017 19:56:57

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

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

Новый участник:
Участников в онлайне:
Гостей в онлайне:
Сейчас на форуме
Там же в login.php это всё в таблицу бд записывается, насколько я понял, по крайней мере онлайн)

Кстати, этот сайт же на laravel? big_smile
Сейчас кстати была ситуация, что видимо время сессии на основном сайте истекло и я был гостем, а на форуме еще авторизован. Это как я понимаю из за вот этого значения time() + $expire??

#6 Re: Общий раздел » Форум для Laravel » 07.05.2017 18:53:42

Proger_XP пишет:

}%Насчёт форумов именно на Laravel может кто-то подскажет, но что касается FluxBB - его можно допилить руками. Я сделал единую авторизацию, регистрацию и профили. Не красиво менять внутренности форума, но работает.

а можно вкратце каким образом?)

единая авторизация и регистрация по таблице БД форума?

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