Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/application_controller.rb2
-rw-r--r--app/controllers/users_sessions_controller.rb6
-rw-r--r--app/views/devise/sessions/_new_base.html.haml4
-rw-r--r--app/views/layouts/_public_head_panel.html.haml4
-rw-r--r--config/routes.rb2
-rw-r--r--features/project/redirects.feature7
-rw-r--r--features/steps/project/redirects.rb22
7 files changed, 41 insertions, 6 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 603e89a5e29..d58890fa33b 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -48,7 +48,7 @@ class ApplicationController < ActionController::Base
flash[:alert] = "Your account is blocked. Retry when an admin has unblocked it."
new_user_session_path
else
- super
+ @return_to || root_path
end
end
diff --git a/app/controllers/users_sessions_controller.rb b/app/controllers/users_sessions_controller.rb
new file mode 100644
index 00000000000..656c92376fd
--- /dev/null
+++ b/app/controllers/users_sessions_controller.rb
@@ -0,0 +1,6 @@
+class UsersSessionsController < Devise::SessionsController
+ def create
+ @return_to = params[:return_to]
+ super
+ end
+end
diff --git a/app/views/devise/sessions/_new_base.html.haml b/app/views/devise/sessions/_new_base.html.haml
index a2f85fa3fe2..989fcb4a63f 100644
--- a/app/views/devise/sessions/_new_base.html.haml
+++ b/app/views/devise/sessions/_new_base.html.haml
@@ -7,8 +7,8 @@
= f.check_box :remember_me
%span Remember me
%div
+ = hidden_field_tag 'return_to', params[:return_to]
= f.submit "Sign in", class: "btn-create btn"
+
.pull-right
= link_to "Forgot your password?", new_password_path(resource_name), class: "btn"
-
-
diff --git a/app/views/layouts/_public_head_panel.html.haml b/app/views/layouts/_public_head_panel.html.haml
index 63992a22f32..25984df0444 100644
--- a/app/views/layouts/_public_head_panel.html.haml
+++ b/app/views/layouts/_public_head_panel.html.haml
@@ -13,10 +13,10 @@
%i.icon-reorder
.pull-right.hidden-xs
- = link_to "Sign in", new_session_path(:user), class: 'btn btn-sign-in btn-new'
+ = link_to "Sign in", new_session_path(:user, return_to: request.fullpath), class: 'btn btn-sign-in btn-new'
.navbar-collapse.collapse
%ul.nav.navbar-nav
%li.visible-xs
- = link_to "Sign in", new_session_path(:user)
+ = link_to "Sign in", new_session_path(:user, return_to: request.fullpath)
diff --git a/config/routes.rb b/config/routes.rb
index 746e532a0ec..779cbad709c 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -157,7 +157,7 @@ Gitlab::Application.routes.draw do
resources :projects, constraints: { id: /[^\/]+/ }, only: [:new, :create]
- devise_for :users, controllers: { omniauth_callbacks: :omniauth_callbacks, registrations: :registrations , passwords: :passwords}
+ devise_for :users, controllers: { omniauth_callbacks: :omniauth_callbacks, registrations: :registrations , passwords: :passwords, sessions: :users_sessions }
#
# Project Area
diff --git a/features/project/redirects.feature b/features/project/redirects.feature
index ce197912f64..776ab83a876 100644
--- a/features/project/redirects.feature
+++ b/features/project/redirects.feature
@@ -24,3 +24,10 @@ Feature: Project Redirects
Given I sign in as a user
When I visit project "Enterprise" page
Then page status code should be 404
+
+ Scenario: I visit a public project without signing in
+ When I visit project "Community" page
+ And I should see project "Community" home page
+ And I click on "Sign In"
+ And Authenticate
+ Then I should be redirected to "Community" page
diff --git a/features/steps/project/redirects.rb b/features/steps/project/redirects.rb
index cfa4ce82be3..5a4342dba30 100644
--- a/features/steps/project/redirects.rb
+++ b/features/steps/project/redirects.rb
@@ -31,5 +31,27 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps
project = Project.find_by(name: 'Community')
visit project_path(project) + 'DoesNotExist'
end
+
+ step 'I click on "Sign In"' do
+ within '.pull-right' do
+ click_link "Sign in"
+ end
+ end
+
+ step 'Authenticate' do
+ admin = create(:admin)
+ project = Project.find_by(name: 'Community')
+ find(:xpath, "//input[@id='return_to']").set "/#{project.path_with_namespace}"
+ fill_in "user_login", with: admin.email
+ fill_in "user_password", with: admin.password
+ click_button "Sign in"
+ Thread.current[:current_user] = admin
+ end
+
+ step 'I should be redirected to "Community" page' do
+ project = Project.find_by(name: 'Community')
+ page.current_path.should == "/#{project.path_with_namespace}"
+ page.status_code.should == 200
+ end
end