From fa9adb6599ae20c8522c92c9a0d670633fe3d5b0 Mon Sep 17 00:00:00 2001 From: Bob Van Landuyt Date: Mon, 24 Jul 2017 14:53:30 +0200 Subject: [PATCH] Explicitly add `protect_from_forgery` action Otherwise the token might be cleared before authentication is done, causing the authentication itself to fail --- app/controllers/sessions_controller.rb | 8 ++++++++ .../unreleased/bvl-fix-login-issue-with-ldap-enabled.yml | 5 +++++ 2 files changed, 13 insertions(+) create mode 100644 changelogs/unreleased/bvl-fix-login-issue-with-ldap-enabled.yml diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 0e8a57f8e03..69513f4dadc 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -5,6 +5,14 @@ class SessionsController < Devise::SessionsController skip_before_action :check_two_factor_requirement, only: [:destroy] + # Explicitly call protect from forgery before anything else. Otherwise the + # CSFR-token might be cleared before authentication is done. This was the case + # when LDAP was enabled and the `OmniauthCallbacksController` is loaded + # + # *Note:* `prepend: true` is the default for rails4, but this will be changed + # to `prepend: false` in rails5. + protect_from_forgery prepend: true, with: :exception + prepend_before_action :check_initial_setup, only: [:new] prepend_before_action :authenticate_with_two_factor, if: :two_factor_enabled?, only: [:create] diff --git a/changelogs/unreleased/bvl-fix-login-issue-with-ldap-enabled.yml b/changelogs/unreleased/bvl-fix-login-issue-with-ldap-enabled.yml new file mode 100644 index 00000000000..a98455d0916 --- /dev/null +++ b/changelogs/unreleased/bvl-fix-login-issue-with-ldap-enabled.yml @@ -0,0 +1,5 @@ +--- +title: Fix cross site request protection when logging in as a regular user when LDAP + is enabled +merge_request: 13049 +author: