Одна база пользователей на двух сайтах, возможно?

Здравствуйте. Возможно уже не такой банальный вопрос. Есть давно работающий сайт, имеющий свою базу пользователей. Сейчас разрабатывается еще один сайт, который будет как дополнение к первому, но не являющийся его частью. Единственное пересечение — база пользователей. Она должна быть одна на оба сайта. В идеале использовать базу пользователей от первого сайта, но я честно говоря не представляю как это возможно.

В голове крутится костыль, написать сниппет, который будет вызываться при авторизации. В сниппет подключить апи модх первого сайта, и через процессор авторизации пробовать аутентифицировать пользователя по логину\паролю, что я получу от пользователя. И если связка логин\пароль от основного сайта верна, на новом сайте создавать\авторизировать пользователя с такой же почтой что и на старом.

Мне этот костыль казался наиболее человечным по виду, но я столкнулся с тем что не могу внутри modx подключить апи другого modx из папки рядом.

Может быть все проще? И я что-то делаю совсем не так? Просто так взять и скопировать всех пользователей из одного сайта во второй не подходит. Пользователи должны быть на первом сайте, там и регистрироваться. Регистрироваться на втором сайте должно быть возможно, но все равно пользователь новый из второго сайта должен создаваться в первом.
Николай
10 мая 2018, 12:07
modx.pro
2
1 377
0

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

Илья Уткин
11 мая 2018, 07:49
+1
Компонент Office умеет делать удалённую авторизацию. Как на modx.pro — основная база пользователей на одном сайте, а на остальных сайтах удалённая авторизация.
    Николай
    11 мая 2018, 09:18
    0
    Смотрел в его сторону, но нужно обойтись без редиректов. Пошел думать костыли…
      Сергей Шлоков
      11 мая 2018, 10:13
      +1
      Для разработчиков.
      1. Лучше следовать современным тенденциям в мире разработки. Сейчас для этой задачи используют OAuth2. Т.е. на сайт 1 ставится сервер OAuth2. На сайт 2 ставиться HybridAuth. Настраивают и то и другое и работают как взрослые.
      2. На обоих сайтах база пользователей будет одинаковая. На втором сайте она будет наполняться по мере аутентификации пользователей. Регистрация должна быть только на первом сайте.
      3. В описании Office опять же путаница с терминологией. Залогинивание пользователя — это аутентификация. Она будет происходить на сайте 1. Нужна только один раз. А авторизация происходит через $modx->hasPermission(). Она уже проводится на сайте 2 и при каждом запросе пользователя.

      Для простых пользователей, использующих MODX как конструктор сайтов, Office отлично подойдёт.
      Николай
      11 мая 2018, 09:24
      0
      Может кто знает алгоритм генерации пароля на modx? где его посмотреть?
        Пётр Молчанов
        11 мая 2018, 10:06
        +1
        Ищи в ядре функцию $modx->user->generatePassword()
        Вот нашел для тебя:
        public function generatePassword($length = 10,array $options = array()) {
                $options = array_merge(array(
                    'allowable_characters' => 'abcdefghjkmnpqrstuvxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789',
                    'srand_seed_multiplier' => 1000000,
                ),$options);
        
                $ps_len = strlen($options['allowable_characters']);
                srand((double) microtime() * $options['srand_seed_multiplier']);
                $pass = '';
                for ($i = 0; $i < $length; $i++) {
                    $pass .= $options['allowable_characters'][mt_rand(0, $ps_len -1)];
                }
                return $pass;
            }
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      7