Module: HeimdallAuth::ControllerAdditions

Includes:
AuthenticationAdditions
Defined in:
lib/heimdall_auth/controller_additions.rb

Overview

This module is automatically included into all controllers. It adds methods like current_user but also handles auth-failure redirections

Class Method Summary collapse

Methods included from AuthenticationAdditions

#current_ability, #current_access_token, #current_environment, #current_user, #get_user_from_auth_server, #storable_location?, #store_location_in_session, #user_signed_in?

Class Method Details

.included(base) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/heimdall_auth/controller_additions.rb', line 11

def self.included(base)
  base.helper_method :current_user, :current_access_token, :current_environment, :user_signed_in? if base.respond_to? :helper_method
  base.before_action :store_location_in_session

  base.rescue_from CanCan::AccessDenied do |exception|
    user_token = params[:user_token].presence

    respond_to do |format|
      format.json { head :forbidden, content_type: 'text/html' }
      format.html {
        if current_user.nil?
          redirect_to new_user_session_path({user_token: user_token})
        elsif current_user.is_invalid
          render 'application/invalid_user_data'
        else
          render 'application/not_enough_rights'
        end
      }
    end
  end

end