Login и контексты (мультиязычность)
Я уже поднимал данную проблему, но не понимал в чем дело: modx.pro/help/5896/
Оказалось, что проблема в Сниппете Login:
Есть 2 контекста: web и en.
Если указываю в Login параметр &contexts=`web,en`, то после входа в контексте en, пользователя перебрасывает на русскую версию сайта, без возможности переключить язык. (т.е. если даже пройти по ссылке site.ru/en/, перекинет на site.ru/)
Если параметр убрать, то на /en/ входит без проблем, однако, если войти на контексте web, то сайт снова не пускает на английскую версию. Спасает только выход и вход на английской версии сайта.
Пока сделал костыль, заменил окно входа ссылками на страницы логина в каждом из контекстов.
Оказалось, что проблема в Сниппете Login:
Есть 2 контекста: web и en.
Если указываю в Login параметр &contexts=`web,en`, то после входа в контексте en, пользователя перебрасывает на русскую версию сайта, без возможности переключить язык. (т.е. если даже пройти по ссылке site.ru/en/, перекинет на site.ru/)
Если параметр убрать, то на /en/ входит без проблем, однако, если войти на контексте web, то сайт снова не пускает на английскую версию. Спасает только выход и вход на английской версии сайта.
Пока сделал костыль, заменил окно входа ссылками на страницы логина в каждом из контекстов.
Комментарии: 9
Попробуйте в обе формы авторизации помимо перечисления контекстов у сниппета добавить следующие скрытые поля в форме авторизации (в обоих контекстах ничего не меняя):
В итоге человек в обоих случаях получит основную авторизацию контекста web, а также дополнительно будет авторизованным в контексте en.
<input type="hidden" name="login_context" value="web">
<input type="hidden" name="add_contexts" value="en">
В итоге человек в обоих случаях получит основную авторизацию контекста web, а также дополнительно будет авторизованным в контексте en.
Похоже, что это работает! Огромное спасибо! Вы очень помогли.
Как показывает практика, Англоговорящие сообщества не отличается терпимостью к подобным ошибкам.
Впрочем, их понять можно, мы ведь тоже по корейским сайтам не ходим.
Как показывает практика, Англоговорящие сообщества не отличается терпимостью к подобным ошибкам.
Впрочем, их понять можно, мы ведь тоже по корейским сайтам не ходим.
Простите, я ошибся. Мне пора привыкнуть к тому, что нельзя тестировать вход админской учеткой.
Это помогает логиниться во всех контекстах сразу, однако не решает основную проблему редиректа.
Это помогает логиниться во всех контекстах сразу, однако не решает основную проблему редиректа.
Может быть что-нибудь не так с правами доступа к контекстам? Админскую учетку пускает в любой контекст. Может быть проблема в том что у простых пользователей нет прав на просмотр данного контекста? Хотя я никаких настроек прав не делал вообще, да и незарегистрированным пользователям контекст en доступен.
Обязательно: Дано группу пользователей, которые имеют право просматривать контексты web и en. Пользователь должен быть добавлен в эту группу. Тогда все работает корректно.
А вышеописанные скрытые поля нужны, чтобы MODX не пытался создать две переменные PHPSESSID в куках при работе с двумя контекстами одновременно в рамках одного доменного имени. Поскольку такая переменная в рамках одной сессии будет использована только одна.
А вышеописанные скрытые поля нужны, чтобы MODX не пытался создать две переменные PHPSESSID в куках при работе с двумя контекстами одновременно в рамках одного доменного имени. Поскольку такая переменная в рамках одной сессии будет использована только одна.
Как же я мог так жестко протупить?)) Добавил строку в свою регистрацию, и все работает.)
$user->joinGroup('Users','Member');
Вопрос на засыпку: есть ли встроенный способ массово добавить всех пользователей в группу?) $users = $modx->getCollection('modUser');
foreach($users as $user) {
$user->joinGroup('Users','Member');
}
Спасибо! Я чуть в mysql уже не полез))
В базу можно лезть только с очень простыми запросами — изменить, например, одно поле для множества записей. В остальных случаях это опасно, тк легко можно что-то упустить и поломать связи объектов.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.