Доступ админа к неопубликованному на фронтенде
reazzon Я неправильно выразился, только backend юзер, я понимаю что речь идет о frontend. Backend Auth и FrontEnd Auth - это две разные вещи. Первой не нужны плагины, чтобы взаимодействовать с ней везде, второй нужен - RainLab.User.
Правильно я понял, что если я авторизируюсь в админке, то мне не нужно ставить плагин User чтобы открыть себе доступ к неопубликованным материалам?
У меня нет регистраций на сайте который делаю на октябре. Мне значит ни каких сессий не нужно добавлять на страницы и можно просто обойтись условием написанным выше?
В компоненте плагина в файле \plugins\octoclub\tutorial\components\item\default.htm просто вставил
{% if app.user %}
Авторизован
{% elseif not app.user %}
Неавторизован
{% endif %}
В админке я авторизован. На фронтенде сайта вижу Неавторизован.
В админке я под пользователем который создан при установке CMS.
В настройках захожу в Администраторы, у пользователя под которым я сижу (он у меня один) обозначено в ГРУППЫ - Owners, РОЛЬ - Developer.
Может где то в конфигах есть настройка на авторизацию вместе с фронтом? Или может какие сессии нужно добавлять? Или у меня пользователь с неправильными правами?
- Изменено
Koresh Попробуй dump(app.user), посмотри, что там есть. Если ничего непонятно, то dump(app.user.toArray()) и увидишь поля на которые можно подвесить условия, хотя, по-моему, один факт того, что переменная не пустая уже является условием.
Но в любом случае посмотри. Либо еще как вариант:
{% if app.user is not empty %}
То есть проверка если пользователь не пустой
- Изменено
BlackCat Попробуй dump(app.user), посмотри, что там есть.
Выводит null
BlackCat dump(app.user.toArray())
NULL
В конфигах искал настройки - ничего такого не увидел.
Есть вот такое в \config\cms.php:
'backendForceRemember' => true,
В \config\session.php
'driver' => 'file',
'lifetime' => 120,
'expire_on_close' => false,
'encrypt' => false,
'files' => storage_path('framework/sessions'),
'connection' => null,
'table' => 'sessions',
'lottery' => [2, 100],
'cookie' => 'october_session',
'path' => '/',
'domain' => null,
'secure' => false,
'same_site' => null,
Я в админке как залогинился при установке CMS, так больше и не выходил из неё. Захожу из закладки - меня сразу залогиненного впускает.
Плагин User я не ставил. К страницам сессий не добавлял.
reazzon Делай по другому.
Спасибо! Так работает. Проверил разлогинился/залогинился в админке - условие отрабатывает правильно.
Единственное, что проверку if (\BackendAuth::check())
наверное нужно внутри какой то функции делать onRun, onStart или onEnd. Если просто вставить - вызывает ошибку.
Я пока в onRun плагина добавил в файле \plugins\octoclub\tutorial\components\Item.php
. Наверное так же и для категорий сделаю.
BlackCat Я бы тебе рекомендовал не делать проверку на то опубликована запись или нет.
Проверки на публикацию лучше выносить в scope метод
Попался на такую проблему на странице всех item'ов (страница с пагинацией). Получается что админу выводит правильно, а обычным посетителям - неправильно (от заданного количества минус неопубликованные).
Исправил так:
$admin = false;
if (\BackendAuth::check()) {
$this->page['admin'] = true;
$admin = true;
}
if ($admin) {
$this->page['items'] = \OctoClub\Tutorial\Models\Item::orderBy('name', 'asc')->paginate($this->property('items'));
}
else {
$this->page['items'] = \OctoClub\Tutorial\Models\Item::where('published', 1)->orderBy('name', 'asc')->paginate($this->property('items'));
}
В твиге проверку на published == 1 убрал. Теперь работает правильно.