Общий кабинет пользователя на нескольких поддоменах

InstantCMS 2.X
#1 9 января 2021 в 16:14
всем привет.
задача: общий кабинет пользователя на несколько подддоменов.
например:
board.site.ru
news.site.ru
и все ссылки на пользователей с данных поддоменов должны отправлять на site.ru/users/1 а не board.site.ru/users/1
кто-либо сталкивался с такой задачей? Как решили?
спасибо заранее.
п.с. пока писал пост, понял, что достаточно будет поиграться с .htaccess. но это не точно.
#2 9 января 2021 в 16:49
Кроме ссылок site/users/1 есть еще ссылки site/users/1/content/albums и др. Даже очень веселые ссылки типа /users/1/content/news/latest?page=3
И они должны вести именно на тот сайт, на котором находится пользователь, так как на других сайтах может не быть этого типа контента. Или может не быть столько же страниц контента.
А с недавних пор еще можно вместо id указывать slug, и ссылка будет такой site/users/test

Вариант с .htaccess точно мимо. И в целом затея так себе…
#3 9 января 2021 в 17:22
Zau4man
сотни тысяч объявлений, по хорошему их бы вывести за пределы основного ресурса, с другой стороны остаются в той же бд… надо думать.
#4 9 января 2021 в 17:39
Василич, ну тогда перебирайте шаблоны, в которых есть ссылки на профили пользователей. Убирайте в них все лишнее и оставляйте только mainsite/users/{id}

В теории должно зайти.

Можно дополнительно дошаманить метод href_to_profile в system/libs/html.helper.php
Прописав там жестко ссылку на основной сайт и обнулив все параметры. Тогда видов ссылок на профиль станет существенно меньше.

Надо пробовать.

Но и это все такие полумеры, так как, например, личные сообщения и уведомления будут отдельные на каждом сайте. Это только то, что на ум пришло.
#5 9 января 2021 в 17:54
Zau4man
спасибо.
да, это всё "костыли", но если конкретно под высоконагруженный проект, то why not.
личка, кстати, общая, уведомления пока не проверял.
#6 11 января 2021 в 16:53
нужно отделять сервис авторизации пользователей от сайтов, как на хабре или Вк
например auth.site.ru/users/1

поставь туда ICMS отключив весь функционал кроме управления пользователями, это будет у тебя "центр авторизации", т.е. чел авторизовавшийся на любом из сайтов, автоматом авторизуется и на всех остальных

описание есть тут: docs.instantcms.ru/manual/components/api
#7 11 января 2021 в 20:59


нужно отделять сервис авторизации пользователей от сайтов, как на хабре или Вк
например auth.site.ru/users/1

поставь туда ICMS отключив весь функционал кроме управления пользователями, это будет у тебя "центр авторизации", т.е. чел авторизовавшийся на любом из сайтов, автоматом авторизуется и на всех остальных
описание есть тут: docs.instantcms.ru/manual/components/api

Евгений Dublic
Я об этом давно думаю, но надо придумать, как тут вывести данные из остальных поддоменов, например всякоразные посты, их количество и т.д.
#8 12 января 2021 в 12:40

как тут вывести данные из остальных поддоменов, например всякоразные посты, их количество и т.д.

Василич

Есть темы на форуме, пару лет назад обсуждались.
Делал такую штуку: Основной сайт и три поддомена. Искал тогда на форуме и в доках инструкции, как сделать, чтоб вся информация пользователя (статьи, посты и т.д) выводилась на всех сайтах. Те рекомендации, что находил на форуме особо не помогли, все время с какими то проблемами сталкивался. Вопрос решился опытным путем....
В общем, как рекомендуется, при установки поддоменов указываем одну папку upload для всех сайтов и т.д.
После правильной установки сталкиваемся с неприятными моментами которые должны присутствовать, если мы хотим выводить всю информацию на всех сайтах, и что заставило меня отказаться от этого решения.
1. Базы данных основного домена и поддоменов должны находиться в одной БД.
2. Все типы контента, виджеты, любые другие дополнения которые установлены на одном сайте, должны быть установлены на всех остальных сайтах. По сути, все сайты должны быть полными копиями. Будет одно отличие — например: если вы хотите доску объявлений вывести только на одном сайте www.board.site.ru, то на остальных сайтах этот тип контента просто присутствует и не заполняется.

Так что, как выше написал Zau4man, в целом затея так себе…
#9 12 января 2021 в 14:28

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

Василич

аналогично через JSON-API

auth.site.ru/api <-> авторизации на сайт1, сайт2, сайт50

посты или ещё что-либо
board.site.ru/api <-> news.site.ru/api

Описание методов API docs.instantcms.ru/manual/components/api/methods
#10 12 января 2021 в 14:40
Компонент API штука занятная и мощная. Но решить с помощью нее задачу — это мягкоговоря совсем не тривиальная задача. Если в программировании не силен, то лучше точно не затеваться. Какое-то время назад пробовал баловаться этой штукой для раздачи товара на сторонние сайты. то есть ставил сайт, закачивал туда большой объем данных, а потом раздавал с помощью комопнента API на другие сайты. Что-то даже получилось. Но там тоже далеко не все так просто. Чего-то в комопненте не хватало, где-то ошибочки были. И чем дальше в лес, тем больше приходилось кодить. А пока кодил, то отпала необходимость в этом вовсе

п.с. пока писал пост, понял, что достаточно будет поиграться с .htaccess. но это не точно.

Василич
Если только на пользователей, то я бы тоже с этого и начал. с 301-ым редиректом
#11 12 января 2021 в 20:21

Если только на пользователей, то я бы тоже с этого и начал. с 301-ым редиректом

vladimird

Авторизацию надо делать по нормальному, если без программирования, то сносить InstantCMS, отказаться от регистрации и сайт переводить на голый HTML, для упрощения администрирования html-сайта использовать тот же Hugo Site Generator
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.