статусы пользователей Сильвер/Голд/Платинум

Может кто делал такое или подскажете что правильней: сделать 3 группы и добавлять в каждую из них подходящих под условие пользователей или сделать в 1ой группе 3 роли?
Пётр Молчанов
21 января 2014, 07:28
modx.pro
1 603
0

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

Василий Наумкин
21 января 2014, 11:56
0
Лучше 3 группы — удобнее выбирать и управлять.
    Пётр Молчанов
    24 января 2014, 10:38
    0
    А как получить список групп пользователя? А то щас беру тока:
    $profile = $user->getOne('Profile');
      if($user->get('primary_group')!=0)
    	$userGroup = $modx->getObject('modUserGroup', array('id'=>$user->get('primary_group')));
      Пётр Молчанов
      27 января 2014, 18:15
      0
      Еще вопрос: я ведь когда ставлю новую группу, то она будет доступна пользователю только когда он перезалогинится. Как поступают в этом случае?)
        Aртур Чикин
        27 января 2014, 19:28
        0
        Делают перезагрузку всех прав доступа, и завершают все сеансы.
          Пётр Молчанов
          28 января 2014, 10:47
          0
          Так у мя предполагается, что статусы эти будут ставится в автоматическом режиме. Использовать процессор logout? Можно там разлогинивать какого-либо пользователя самому?
            Aртур Чикин
            28 января 2014, 11:24
            0
            Делают перезагрузку всех прав доступа, и завершают все сеансы.
            завершают все сеансы
            завершают все сеансы
            завершают все сеансы
            завершают все сеансы .......
              Пётр Молчанов
              28 января 2014, 11:35
              0
              Так это ж вручную завершают, так? А у меня автоматом в группы будут пользователи добавляться…
                Aртур Чикин
                28 января 2014, 11:43
                0
                После того как ты создал группу, необходимо перезагрузить права доступа, что бы они (новые группы) вступили в силу, потом завершить все сеансы, что бы пользователи стали все не авторизованные, после чего пари следующем заходе, если у тебя все правильно настроено, пользователь авторизируется в нужной группе, с нужными правами.
                  Пётр Молчанов
                  28 января 2014, 11:54
                  0
                  Ок, это понял. Но вопрос в другом, смотри:
                  1. я сбросил права, завершил сеансы
                  2. человек пришел ко мне на сайт, он уже был зареган, авторизуется, т.к. я всех ралогинил
                  3. через какое-то время он подпадает под условие группы, например, Сильвер (сделал нужное кол-во заказов), парсер автоматом добавляет его в группу Сильвер и пользователь получает уведомление об этом на почту
                  В таком случае к нему сразу же применится свойства новой группы, либо опять же ему надо перезалогиниваться?
                    Aртур Чикин
                    28 января 2014, 13:51
                    0
                    Я так понимаю что не нужно будет.
                    Василий Наумкин
                    28 января 2014, 14:19
                    1
                    0
                    Эдак ты бы у меня каждый день заново логинился.

                    Не обязательно завершать все сеансы, можно точечно обновлять права юзера.
                      Пётр Молчанов
                      28 января 2014, 14:41
                      0
                      Т.е., создавая новые группы, можно после этого 1 раз сбросить права и сеансы и дальше всё будет норм, добавляя пользователя в одну группу и удаляя из другой?
                        Aртур Чикин
                        28 января 2014, 14:46
                        0
                        Да, но изменения будут применятся только при новой авторизации пользователем.
                          Василий Наумкин
                          28 января 2014, 14:48
                          0
                          Ничего не нужно сбрасывать вообще.

                          Нужно аккуратно обновлять конкретных юзеров, добавленных в группу. — код я дал ниже.

                          Как у меня раньше работала платная подписка? Именно так — юзер добавлялся и удалялся из группы без общих сбросов.
              Василий Наумкин
              28 января 2014, 14:18
              4
              0
              Я выставляю пользователю переменную в поле extended профиля, а потом проверяю её при загрузке им страницы.

              Если есть — перезагружаю его права.
              $extended = $modx->user->Profile->get('extended')) {
              if (!empty($extended['updateGroups'])) {
              	unset($_SESSION['modx.user.'.$modx->user->id.'.userGroupNames']);
              	$extended['updateGroups'] = 0;
              	$modx->user->Profile->set('extended', $extended);
              	$modx->user->Profile->save();
              	
              	$ctxQuery = $modx->newQuery('modContext');
              	$ctxQuery->select($modx->getSelectColumns('modContext', '', '', array('key')));
              	if ($ctxQuery->prepare() && $ctxQuery->stmt->execute()) {
              		if ($contexts = $ctxQuery->stmt->fetchAll(PDO::FETCH_COLUMN)) {
              			$serialized = serialize($contexts);
              			$modx->exec("UPDATE {$modx->getTableName('modUser')} SET {$modx->escape('session_stale')} = {$modx->quote($serialized)}");
              		}
              	}
              }
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              15