diff --git a/app/controllers/redmine_oauth_controller.rb b/app/controllers/redmine_oauth_controller.rb index 0efac4c8c70e9acb6133ce90c2512e5d619a1cab..93f928a4a4a1cb561b21a987c84ff73745ee02cb 100644 --- a/app/controllers/redmine_oauth_controller.rb +++ b/app/controllers/redmine_oauth_controller.rb @@ -14,19 +14,24 @@ class RedmineOauthController < AccountController end def oauth_google_callback - token = oauth_client.auth_code.get_token(params[:code], :redirect_uri => oauth_google_callback_url) - result = token.get('https://www.googleapis.com/oauth2/v1/userinfo') - info = JSON.parse(result.body) - if info && info["verified_email"] - if allowed_domain_for?(info["email"]) - try_to_login info + if params[:error] + flash[:error] = l(:notice_access_denied) + redirect_to signin_path + else + token = oauth_client.auth_code.get_token(params[:code], :redirect_uri => oauth_google_callback_url) + result = token.get('https://www.googleapis.com/oauth2/v1/userinfo') + info = JSON.parse(result.body) + if info && info["verified_email"] + if allowed_domain_for?(info["email"]) + try_to_login info + else + flash[:error] = l(:notice_domain_not_allowed, :domain => parse_email(info["email"])[:domain]) + redirect_to signin_path + end else - flash[:error] = l(:notice_domain_not_allowed, :domain => parse_email(info["email"])[:domain]) + flash[:error] = l(:notice_unable_to_obtain_google_credentials) redirect_to signin_path end - else - flash[:error] = l(:notice_unable_to_obtain_google_credentials) - redirect_to signin_path end end diff --git a/config/locales/en.yml b/config/locales/en.yml index 82a366e6abfd51cd7e5297de792742f9ae126dc6..c78fd417b0c052a1abaebd023f493dc98df10d7c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,4 +1,5 @@ en: notice_unable_to_obtain_google_credentials: "Unable to obtain credentials from Google." notice_domain_not_allowed: "You can not login using %{domain} domain." + notice_access_denied: "You must allow to use you Google credentials to enter this site." login_via_google: "Login via Google" diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 56556667b798666b3ced164ec1c1fbb2a571b05d..5e52f73b1ddb2a2a1ac6d27ae276578706f212a1 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -1,4 +1,5 @@ ru: notice_unable_to_obtain_google_credentials: "Не удалось получить данные от Google." notice_domain_not_allowed: "Вы не можете войти в систему при помощи домена %{domain}." - login_via_google: "Войти с Google" \ No newline at end of file + notice_access_denied: "Для корректного входа необходимо разрешить приложению доступ к аккаунту." + login_via_google: "Войти с Google"