Merge branch 'oauth_errors' into 'master'
Oauth errors page
This commit is contained in:
commit
5eb734905c
|
@ -257,13 +257,6 @@ li.note {
|
|||
}
|
||||
}
|
||||
|
||||
h1.http_status_code {
|
||||
font-size: 56px;
|
||||
line-height: 100px;
|
||||
font-weight: normal;
|
||||
color: #456;
|
||||
}
|
||||
|
||||
.control-group {
|
||||
.controls {
|
||||
span {
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
.error-page {
|
||||
max-width: 400px;
|
||||
margin: 0 auto;
|
||||
|
||||
h1, h2, h3 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 56px;
|
||||
line-height: 100px;
|
||||
font-weight: 300;
|
||||
}
|
||||
}
|
|
@ -31,6 +31,12 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
|||
end
|
||||
end
|
||||
|
||||
def omniauth_error
|
||||
@provider = params[:provider]
|
||||
@error = params[:error]
|
||||
render 'errors/omniauth_error', layout: "errors", status: 422
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def handle_omniauth
|
||||
|
@ -45,14 +51,19 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
|||
|
||||
# Create user if does not exist
|
||||
# and allow_single_sign_on is true
|
||||
if Gitlab.config.omniauth['allow_single_sign_on']
|
||||
@user ||= Gitlab::OAuth::User.create(oauth)
|
||||
if Gitlab.config.omniauth['allow_single_sign_on'] && !@user
|
||||
@user, errors = Gitlab::OAuth::User.create(oauth)
|
||||
end
|
||||
|
||||
if @user
|
||||
if @user && !errors
|
||||
sign_in_and_redirect(@user)
|
||||
else
|
||||
flash[:notice] = "There's no such user!"
|
||||
if errors
|
||||
error_message = errors.map{ |attribute, message| "#{attribute} #{message}" }.join(", ")
|
||||
redirect_to omniauth_error_path(oauth['provider'], error: error_message) and return
|
||||
else
|
||||
flash[:notice] = "There's no such user!"
|
||||
end
|
||||
redirect_to new_user_session_path
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
%h1.http_status_code 403
|
||||
%h3.page-title Access Denied
|
||||
%h1 403
|
||||
%h3 Access Denied
|
||||
%hr
|
||||
%p You are not allowed to access this page.
|
||||
%p Read more about project permissions #{link_to "here", help_page_path("permissions", "permissions"), class: "vlink"}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
%h1.http_status_code 500
|
||||
%h3.page-title Encoding Error
|
||||
%h1 500
|
||||
%h3 Encoding Error
|
||||
%hr
|
||||
%p Page can't be loaded because of an encoding error.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
%h1.http_status_code 404
|
||||
%h3.page-title Git Resource Not found
|
||||
%h1 404
|
||||
%h3 Git Resource Not found
|
||||
%hr
|
||||
%p
|
||||
Application can't get access to some branch or commit in your repository. It
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
%h1.http_status_code 404
|
||||
%h3.page-title The resource you were looking for doesn't exist.
|
||||
%h1 404
|
||||
%h3 The resource you were looking for doesn't exist.
|
||||
%hr
|
||||
%p You may have mistyped the address or the page may have moved.
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
%h1 422
|
||||
%h3 Sign-in using #{@provider} auth failed
|
||||
%hr
|
||||
%p Sign-in failed because #{@error}.
|
||||
%p There are couple of steps you can take:
|
||||
|
||||
%ul
|
||||
%li Try logging in using your email
|
||||
%li Try logging in using your username
|
||||
%li If you have forgotten your password, try recovering it using #{ link_to "Password recovery", new_password_path(resource_name) }
|
||||
|
||||
%p If none of the options work, try contacting the GitLab administrator.
|
|
@ -4,7 +4,6 @@
|
|||
%body{class: "#{app_theme} application"}
|
||||
= render "layouts/head_panel", title: "" if current_user
|
||||
= render "layouts/flash"
|
||||
.container
|
||||
.content
|
||||
.center.padded.prepend-top-20
|
||||
= yield
|
||||
.container.navless-container
|
||||
.error-page
|
||||
= yield
|
||||
|
|
|
@ -160,6 +160,9 @@ Gitlab::Application.routes.draw do
|
|||
|
||||
devise_for :users, controllers: { omniauth_callbacks: :omniauth_callbacks, registrations: :registrations , passwords: :passwords, sessions: :users_sessions }
|
||||
|
||||
devise_scope :user do
|
||||
get "/users/auth/:provider/omniauth_error" => "omniauth_callbacks#omniauth_error", as: :omniauth_error
|
||||
end
|
||||
#
|
||||
# Project Area
|
||||
#
|
||||
|
|
|
@ -44,7 +44,13 @@ module Gitlab
|
|||
user.username = email_username.gsub("'", "")
|
||||
end
|
||||
|
||||
user.save!
|
||||
begin
|
||||
user.save!
|
||||
rescue ActiveRecord::RecordInvalid => e
|
||||
log.info "(OAuth) Email #{e.record.errors[:email]}. Username #{e.record.errors[:username]}"
|
||||
return nil, e.record.errors
|
||||
end
|
||||
|
||||
log.info "(OAuth) Creating user #{email} from login with extern_uid => #{uid}"
|
||||
|
||||
if Gitlab.config.omniauth['block_auto_created_users'] && !ldap?
|
||||
|
|
Loading…
Reference in New Issue