Sha256: fa61f3d014f9c818361ce0ae56d79cd80456903270dceb0f44285c9eee2a6929
Contents?: true
Size: 1.11 KB
Versions: 2
Compression:
Stored size: 1.11 KB
Contents
# frozen_string_literal: true module Authorizy class Core def initialize(user, params, session, cop:) @cop = cop @params = params @session = session @user = user end 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) if @cop.respond_to?(cop_controller) false end private def action @params[:action].to_s end def controller @params[:controller].to_s end def cop_controller controller.sub('/', '__') end def expand(permissions) return [] if permissions.blank? Authorizy::Expander.new.expand(permissions) end def session_permissions expand(@session[:permissions]) end def route_match?(tuple) tuple[0] == controller && tuple[1] == action end def user_permissions expand(@user.authorizy.try(:[], 'permissions')) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
authorizy-0.2.1 | lib/authorizy/core.rb |
authorizy-0.2.0 | lib/authorizy/core.rb |