У меня есть приложение ruby on rails, которое проверяет подлинность пользователей через Yammer, а затем перенаправляет их в нужный арендатор в зависимости от их сетевого имени.Возврат сетевого поддомена от Yammer
Workflow в основном идет как это:
Пользователь представлен со знаком в/страницу регистрации
Authenticate через API Yammer и перенаправляется обратно обратного вызова URL (
yammer.example.com/auth
)Контроллер обратного вызова затем проверяет ответ автоответчика и определяет сеть, к которой принадлежит пользователь.
перенаправить к этому арендатору на поддомен (например,
my-network.example.com
) и подписать пользователя в
Есть некоторые другие вещи, которые идут здесь в фоновом режиме (создание других пользователей в сети, сопоставление пользователей и т. д.), но проблема, с которой я столкнулась, связана с фактическим созданием и перенастройкой сетевого имени и поддомена.
Способ, которым в настоящее время обрабатывается поддомен, - использовать SLD имени сети пользователя.
В качестве примера network_name: "example.com"
возвращает «пример» в качестве субдомена для создания или перенаправления.
Все это отлично работает, пока мы не начали тестирование с платной учетной записью Yammer, их сетевые имена, похоже, не очень хорошо сочетаются с нашим текущим кодом.
Это то, что сейчас мы используем:
if PublicSuffix.valid?(auth.extra.raw_info.network_name.mb_chars.normalize(:kc).to_s.downcase)
yammer_domain = PublicSuffix.parse(auth.extra.raw_info.network_name.mb_chars.normalize(:kc).downcase)
subdomain = yammer_domain.sld.gsub(/[^0-9A-Za-z]/, '')
else
subdomain = auth.extra.raw_info.network_name.downcase.gsub(/[^0-9A-Za-z]/, '')
end
Я признаю, что это не самый чистый в данный момент, потому что я был взлом немного пытается поймать, когда имя сети не является правильным домена и его там. Я нормализую все символы, а затем разбираю SLD, используя драгоценный камень PublicSuffix.
Если это не является допустимым домена, то я пытаюсь нормализовать символы и зачистите все, что нам не нужно (так что-то вроде L'Oreal просто стать Loreal).
Это похоже на ошибку, а не на синтаксический анализ.
Так что мой вопрос:
Есть ли что-нибудь другое о том, как сетевые имена создаются с оплаченными счетами против свободных счетов? Есть ли более надежный способ вернуть имя сети для анализа поддоменов с помощью Yammer API?
Основной домен может измениться, хотя это необычно, поскольку администратор не может сделать это напрямую. Обычно это результат некоторой слияния для организации. –