Sha256: a3b4a9486c86da0f15c058fc3a768646523eba02199eeeec5ce901fa6c6e6453

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 KB

Contents

module DoorkeeperSsoClient
  module Mixins
    module ControllerHelpers
      extend ActiveSupport::Concern

      module ClassMethods
        def activate_sso(scope, options = {})

          class_eval <<-METHODS, __FILE__, __LINE__ + 1
            def validate_passport!
              if #{scope}_signed_in?
                sign_out(current_#{scope}) unless current_#{scope}.passport.try(:active?)
              end
              return true
            end

            def after_sign_out_path_for(resource_or_scope)
              scope = Devise::Mapping.find_scope!(resource_or_scope)
              if scope == :#{scope}
               return File.join( DoorkeeperSsoClient::Config.base_uri, "logout?app_id=" + DoorkeeperSsoClient::Config.oauth_client_id.to_s )
              end
              super
            end
          METHODS

          unless options[:skip_devise_hook]
            class_eval <<-METHODS, __FILE__, __LINE__ + 1
              def authenticate_#{scope}!
                store_location_for(:#{scope}, request.original_url)
                validate_passport!
                redirect_to DoorkeeperSsoClient::Config.oauth_login_path unless #{scope}_signed_in?
              end
            METHODS
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
doorkeeper_sso_client-0.3.0 lib/doorkeeper_sso_client/mixins/controller_helpers.rb
doorkeeper_sso_client-0.2.9 lib/doorkeeper_sso_client/mixins/controller_helpers.rb