class Authorizy::Core

Public Class Methods

new(user, params, session, cop:) click to toggle source
# File lib/authorizy/core.rb, line 5
def initialize(user, params, session, cop:)
  @cop     = cop
  @params  = params
  @session = session
  @user    = user
end

Public Instance Methods

access?() click to toggle source
# File lib/authorizy/core.rb, line 12
def access?
  return false if @user.blank?

  return true if @cop.access? ||
                 session_permissions.any? { |tuple| route_match?(tuple) } ||
                 user_permissions.any? { |tuple| route_match?(tuple) }

  return @cop.public_send(cop_controller) == true if @cop.respond_to?(cop_controller)

  false
end

Private Instance Methods

action() click to toggle source
# File lib/authorizy/core.rb, line 26
def action
  @params[:action].to_s
end
controller() click to toggle source
# File lib/authorizy/core.rb, line 30
def controller
  @params[:controller].to_s
end
cop_controller() click to toggle source
# File lib/authorizy/core.rb, line 34
def cop_controller
  controller.sub('/', '__')
end
expand(permissions) click to toggle source
# File lib/authorizy/core.rb, line 38
def expand(permissions)
  return [] if permissions.blank?

  Authorizy::Expander.new.expand(permissions)
end
route_match?(tuple) click to toggle source
# File lib/authorizy/core.rb, line 48
def route_match?(tuple)
  tuple[0] == controller && tuple[1] == action
end
session_permissions() click to toggle source
# File lib/authorizy/core.rb, line 44
def session_permissions
  expand(@session[:permissions])
end
user_permissions() click to toggle source
# File lib/authorizy/core.rb, line 52
def user_permissions
  expand(Authorizy.config.field.call(@user).try(:[], 'permissions'))
end