Sha256: a7892af9246bb95dd2c55fbac753ddde9416176f55e74c365a9c4ec301c519b7

Contents?: true

Size: 1.39 KB

Versions: 13

Compression:

Stored size: 1.39 KB

Contents

# frozen_string_literal: true

module Decidim
  # Shared behaviour for signed_in users that require the latest TOS accepted
  module HasStoredPath
    extend ActiveSupport::Concern

    included do
      # Saves the location before loading each page so we can return to the
      # right page.
      before_action :store_current_location
    end

    # Stores the url where the user will be redirected after login.
    #
    # Uses the `redirect_url` param or the current url if there is no param.
    # In Devise controllers we only store the URL if it is from the params, we do not
    # want to overwrite the stored URL for a Devise one.
    def store_current_location
      return if skip_store_location?

      value = redirect_url || request.url
      store_location_for(:user, value)
    end

    def skip_store_location?
      # Skip if Devise already handles the redirection
      return true if devise_controller? && redirect_url.blank?
      # Skip for all non-HTML requests"
      return true unless request.format.html?
      # Skip if a signed in user requests the TOS page without having agreed to
      # the TOS. Most of the times this is because of a redirect to the TOS
      # page (in which case the desired location is somewhere else after the
      # TOS is agreed).
      return true if current_user && !current_user.tos_accepted? && request.path == URI(tos_path).path

      false
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
decidim-core-0.29.1 app/controllers/concerns/decidim/has_stored_path.rb
decidim-core-0.28.4 app/controllers/concerns/decidim/has_stored_path.rb
decidim-core-0.29.0 app/controllers/concerns/decidim/has_stored_path.rb
decidim-core-0.28.3 app/controllers/concerns/decidim/has_stored_path.rb
decidim-core-0.29.0.rc4 app/controllers/concerns/decidim/has_stored_path.rb
decidim-core-0.29.0.rc3 app/controllers/concerns/decidim/has_stored_path.rb
decidim-core-0.29.0.rc2 app/controllers/concerns/decidim/has_stored_path.rb
decidim-core-0.29.0.rc1 app/controllers/concerns/decidim/has_stored_path.rb
decidim-core-0.28.2 app/controllers/concerns/decidim/has_stored_path.rb
decidim-core-0.28.1 app/controllers/concerns/decidim/has_stored_path.rb
decidim-core-0.28.0 app/controllers/concerns/decidim/has_stored_path.rb
decidim-core-0.28.0.rc5 app/controllers/concerns/decidim/has_stored_path.rb
decidim-core-0.28.0.rc4 app/controllers/concerns/decidim/has_stored_path.rb