module GDS::SSO::ControllerMethods

Public Class Methods

included(base) click to toggle source
# File lib/gds-sso/controller_methods.rb, line 15
def self.included(base)
  base.rescue_from PermissionDeniedError do |e|
    if GDS::SSO::Config.api_only
      render json: { message: e.message }, status: :forbidden
    else
      render "authorisations/unauthorised", layout: "unauthorised", status: :forbidden, locals: { message: e.message }
    end
  end

  unless GDS::SSO::Config.api_only
    base.helper_method :user_signed_in?
    base.helper_method :current_user
  end
end

Public Instance Methods

authenticate_user!() click to toggle source
# File lib/gds-sso/controller_methods.rb, line 38
def authenticate_user!
  warden.authenticate!
end
authorise_user!(permissions) click to toggle source
# File lib/gds-sso/controller_methods.rb, line 30
def authorise_user!(permissions)
  # Ensure that we're authenticated (and by extension that current_user is set).
  # Otherwise current_user might be nil, and we'd error out
  authenticate_user!

  GDS::SSO::AuthoriseUser.call(current_user, permissions)
end
current_user() click to toggle source
# File lib/gds-sso/controller_methods.rb, line 50
def current_user
  warden.user if user_signed_in?
end
logout() click to toggle source
# File lib/gds-sso/controller_methods.rb, line 54
def logout
  warden.logout
end
user_remotely_signed_out?() click to toggle source
# File lib/gds-sso/controller_methods.rb, line 42
def user_remotely_signed_out?
  warden && warden.authenticated? && warden.user.remotely_signed_out?
end
user_signed_in?() click to toggle source
# File lib/gds-sso/controller_methods.rb, line 46
def user_signed_in?
  warden && warden.authenticated? && !warden.user.remotely_signed_out?
end
warden() click to toggle source
# File lib/gds-sso/controller_methods.rb, line 58
def warden
  request.env["warden"]
end