Обязательный вход, закрытые разделы

Приветствую.
Возможно, вопрос банальный, но несколько дней поиска не дали ответа.
С MODX работаю меньше недели, решил попробовать его, как замену Drupal.

Нужен пинок в нужную сторону, пока не могу разобраться в некоторых вещах.
Общая задача такая:
  1. Сделать сайт с обязательным входом (заглушка с формой логина вместо сайта, до момента входа). Сейчас организован вход и регистрация компонентом Login, но как полностью закрыть сайт — не разобрался.
  2. Каждому пользователю вручную админом назначаются «проекты», ресурсы которых он может видеть и создавать. В том числе тикеты (компонент Ticket), некоторым пользователям надо дать доступ ко всем проектам. Где почитать про систему контроля доступа? Очень сложно понять контексты, роли, группы пользователей, политики доступа. По отдельности — всё вроде ясно, но как они взаимодействуют — весь мозг сломал.
Буду рад любым советам по реализации или тычкам носом в мануалы.
Спасибо.
Фёдор
27 июля 2015, 20:01
modx.pro
6
4 284
0

Комментарии: 16

Максим Кузнецов
28 июля 2015, 00:26
3
+3
1) По пунктам:
— При регистрации через Login нужно заносить пользователя в определенную группу (Users).
— Выставить группе анонимных пользователей права Load only на все контексты, где нужно запрашивать авторизацию
— Добавить в системной настройке unauthorized_page (403 ошибка) айди страницы с формой авторизации

После чего всех неавторизованных пользователей, при запросе на закрытую страницу, будет перебрасывать на страницу авторизации.

//Примечание: для альтернативы, если не нужна переадресация, можно создать простой сниппет (допустим, getAccess) и вызывать его на каждой странице.

Сниппет getAccess:
<?php
	$user = (!empty($userId)) ? $modx->getObject('modUser', $userId) : $modx->user;

	if (is_object($user) && $modx->user->isAuthenticated('web')) {
		return $content;
	}
	else {
		return $modx->getChunk('название_чанка');
	}
— соответственно, нужно создать чанк с формой авторизации и обозначить для сниппета параметр &content, в котором будет храниться html-код.

Пример:
<html>
	<head>
		[[$meta]]
	</head>
	<body>
		[[!getAccess? &content=`
			//ваш хтмл-код
		`]]
	</body>
</html>
(как альтернатива, можно переписать строчку сниппета «return $content» на «return $modx->getChunk($content);» — в таком случае, при вызове в поле &content нужно будет указывать название чанка, который отобразится авторизованному пользователю).

Из минусов такого метода — поисковые системы проиндексируют кучу дублей одинаковых страниц с формой авторизации.

2. modstore.pro/packages/ecommerce/payandsee — может быть, это вам поможет? В противном случае — придется настраивать свои сниппеты, завязанные на extend-полях пользователя.
    Сергей Шлоков
    28 июля 2015, 07:38
    +1
    Вот здесь хорошо описано, как сделать страницы только для зарегистрированных пользователей.
      Наумов Алексей
      28 июля 2015, 09:08
      +1
      Простой плагин closeWebSite, вешаем на событие OnLoadWebDocument

      В плагине цифра 8 — это id страницы входа, цифра 1 — id главной страницы.
      <?php
      $logged = $modx->user->hasSessionContext('web');
      $isLoginPage = $modx->resource->get('id') == 8;
      
      if($logged){
        if($isLoginPage){
          $url = $modx->makeUrl(1);
          $modx->sendRedirect($url);
        }
        return;
      }
      if(!$logged && !$isLoginPage) {
        $modx->sendForward(8);
      }
        Фёдор
        28 июля 2015, 09:53
        0
        То, что надо! Спасибо.
          Rootiys
          10 мая 2018, 13:05
          0
          А как требовать авторизацию на всех страницах, кроме одной? С id 30 например.
            Наумов Алексей
            10 мая 2018, 13:49
            0
            Внимательно посмотреть на код в комментарии выше.
          Денис Богдановский
          28 июля 2015, 10:22
          +1
          МОжет пригодиться — шпаргалка по правам пользователя file.modx.pro/files/b/9/2/b9223a4ef907c00a07cca6fd1666dddd.pdf
            Василий Наумкин
            28 июля 2015, 10:51
            +1
            Перевод отличной заметки от Боба Рея про модель безопасности MODX.
            Волков Николай
            18 октября 2017, 23:10
            0
            Вот еще от Боба Рэя:

            bobsguides.com/revolution-permissions.html
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              16