Я использую omniauth и разрабатываю и Google, чтобы пользователи заходили на сайт. Мне нужно только разрешить пользователям входить в систему, если у них есть конкретная электронная почта компании. Например, они нажимают на вход в Google и затем, если у них нет адреса электронной почты «@ somecompany.com», они могут успешно войти в систему. В противном случае они не могут войти в систему с обычным почтовым сообщением «@ gmail.com». Кажется, я не могу найти, где это сделать в документации.Google omniauth + devise + @domain access + rails
модель пользователя
def self.from_omniauth(access_token)
data = access_token.info
user = User.where(email: data['email']).first_or_initialize
user.given_name = data['first_name']
user.family_name = data['last_name']
user.password = SecureRandom.uuid
user.save!
user
end
OmniAuth контроллер
def google_oauth2
@user = User.from_omniauth(request.env["omniauth.auth"])
if @user.persisted?
flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Google"
sign_in_and_redirect @user, :event => :authentication
else
session["devise.google_data"] = request.env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
маршруты
devise_for :users, :controllers => { :omniauth_callbacks => "omniauth_callbacks" }
Спасибо, что это сработало, нужно было изменить контроллер ominaut, как и ссылку, которую вы мне отправили – wildrails
рад, что это помогло :) –