Фотоальбомы недоступные для гостей.

Нужна помощ.

#1 12 ноября 2014 в 07:12
Доброго всем.
Друзья подскажите где копнуть...
Стоит задача сделать так, что б при просмотре фотоальбомов, неавторизированный пользователь получал сообщение что "нужно войти".
Например если гость пытается посмотреть профиль пользователя, выскакивает сообщение что "вы должны быть авторизированы" и форма ввода логина и пароля.
А вот при просмотре фотоальбома пользователя, такого нет. Ссылки я попрятал от гостей, но если просто вбить адрес типо www.сайт.ру/albums/номер альбома-title.html, альбом приспокойно открывается.
В каком файле нужно поставить проверку на права пользователя и в краце хотя бы, как?

Буду очень признателен за помощь. Неделю бьюсь уже cry
#2 12 ноября 2014 в 08:31
Какая версия InstantCMS?
#3 12 ноября 2014 в 08:49


Какая версия InstantCMS?

Val

Ох… опять забыл написать. ICMS 2.1.1
#4 12 ноября 2014 в 09:50
  1. if (!cmsUser::getInstance()->isLogged()) { cmsCore::error404(); }
#5 12 ноября 2014 в 10:58


  1. if (!cmsUser::getInstance()->isLogged()) { cmsCore::error404(); }

Val

Оу… благодарю. А в каком файле прописывать сию строчку не подскажете? Явно не в шаблоне ведь?
#6 12 ноября 2014 в 20:51
Можно и через шаблон ловить))
Просто не рендерить полученные данные, например в templates\default\content\albums_list.tpl.php, если к уже имеющемуся условию, добавляем проверку на залогинненость пользователя, то пока он не авторизуется будет лицезреть "Нет элементов для отображения" (если надо, можно послать его еще дальше — cmsCore::error404(); joke). Конечно, при этом остается возможность просмотра картинок по прямой ссылке...

Далее, смотрим адрес ссылок этих картинок: sitename.ru/photos/view/id, т.е. контроллер photos -> экшен view. Ищем что там рендериться на выходе… templates\default\controllers\photos\view.tpl.php

Собственно, тут вставляем в начале шаблона наше условие, с добавлением выхода из php-скрипта:
  1. if (!cmsUser::getInstance()->isLogged()) { cmsCore::error404(); exit(); }
Но и теперь, прямая ссылка на сам файл картинки доступен: sitename.ru/upload/000/u1/001/3e90feff.jpg < — у вас будет своя абракадабра. Возможно вопрос решается правкой .htaccess, а может есть и другие способы, сходу не скажу)) В любом случае, среди обычных пользователей экстрасенсов не много — угадать название картинки слегка затруднительно.
#7 13 ноября 2014 в 21:07


Можно и через шаблон ловить))

Val
Здорово! Всё работает! Теперь выкидывает на страницу 404 dance

А можно как то сделать вот эту строчку:
  1. if (!cmsUser::getInstance()->isLogged()) { cmsCore::error404(); exit(); }
что б вместо
  1. { cmsCore::error404(); exit(); }
Перекидывало на форму входа?
Типо как сделано на пользователях. Гостей при попытке посмотреть профиль юзера перекидывает на страницу входа. Сейчас пытаюсь сам отыскать это условие в шаблонах, пока безрезультатно.

И может быть вы знаете… возможно ли поставить проверку на группу пользователей? Ну например что б группа "новички" не могла видеть то, что может видеть группа "пользователи"…
Проверка типо такой вот:
  1. if (!cmsUser::getInstance()->Группа "Гости" или "новички"()) { cmsCore::error404(); exit(); } Иначе всё показывается.
  2.  
ПРобовал делать по id группы юзеров из базы данных… что то не получается =(
#8 13 ноября 2014 в 22:41

Перекидывало на форму входа?

Блицкриг
попробуйте <?php if (!cmsUser::getInstance()->isLogged()) { cmsCore::getController('auth')->redirectToAction('login'); exit(); } ?>

про группу пользователей сходу сказать не могу, надо копать и разбираться)) но ничего невозможного тут нет))
#9 13 ноября 2014 в 22:56
Вообще конечно не по феншую в шаблоне логику писать)). MVC категорически против! но главное никому не показывать =)
#10 14 ноября 2014 в 00:25


Вообще конечно не по феншую в шаблоне логику писать)). MVC категорически против! но главное никому не показывать =)

Val

А то… фен-шуй в ярости, но хоть какой то результат. Большое спасибо вам за помощь.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.