class JunglePath::Authorization::Filter
Public Class Methods
new(roles, schema_models_hash, role_permissions={})
click to toggle source
# File lib/jungle_path/authorization/filter.rb, line 7 def initialize roles, schema_models_hash, role_permissions={}, role_restrictions={}, role_schema_filters={}, schema_filters={} @schema_models_hash = schema_models_hash @role_permissions = role_permissions @role_restrictions = role_restrictions eat_roles roles, role_permissions, role_restrictions, role_schema_filters, schema_filters end
Public Instance Methods
has_access?(permission_restriction_name)
click to toggle source
# File lib/jungle_path/authorization/filter.rb, line 24 def has_access? permission_restriction_name has_permission?(permission_restriction_name) and !(has_restriction?(permission_restriction_name)) end
has_permission?(permission_name)
click to toggle source
# File lib/jungle_path/authorization/filter.rb, line 28 def has_permission? permission_name puts "@permissions.keys #{@permissions.keys}." puts "has_permission? #{permission_name}." symbol = permission_name.to_sym has_it = symbol == @permissions[symbol] has_it = :root == @permissions[:root] unless has_it has_it end
has_restriction?(restriction_name)
click to toggle source
# File lib/jungle_path/authorization/filter.rb, line 37 def has_restriction? restriction_name symbol = restriction_name.to_sym symbol == @restrictions[symbol] end
is_root?()
click to toggle source
# File lib/jungle_path/authorization/filter.rb, line 14 def is_root? @is_root = has_permission?(:root) if @is_root == nil @is_root end
is_user_admin?()
click to toggle source
# File lib/jungle_path/authorization/filter.rb, line 19 def is_user_admin? @is_user_admin = has_permission?(:auth_admin) if @is_user_admin == nil @is_user_admin end
permissions()
click to toggle source
# File lib/jungle_path/authorization/filter.rb, line 42 def permissions @permissions.keys end
restrictions()
click to toggle source
# File lib/jungle_path/authorization/filter.rb, line 46 def restrictions @restrictions.keys end
roles()
click to toggle source
# File lib/jungle_path/authorization/filter.rb, line 59 def roles @roles[0..-1] end
root_roles()
click to toggle source
# File lib/jungle_path/authorization/filter.rb, line 63 def root_roles return @root_roles if @root_roles @root_roles = {} @role_permissions.each do |k, v| @root_roles[k] = k if v.include? :root end @root_roles end
schema_filter()
click to toggle source
# File lib/jungle_path/authorization/filter.rb, line 50 def schema_filter @schema_filter end
schema_node_tree()
click to toggle source
# File lib/jungle_path/authorization/filter.rb, line 54 def schema_node_tree @schema_node_tree = JunglePath::Gen::SchemaTree.gen_node_tree(@schema_models_hash, JunglePath::Gen::SchemaTree::Filter.new(@schema_filter)) unless @schema_node_tree @schema_node_tree end
to_s()
click to toggle source
# File lib/jungle_path/authorization/filter.rb, line 72 def to_s "roles: #{@roles}\npermissions: #{@permissions}\nrestrictions: #{@restrictions}\nschema_filter: #{@schema_filter}" end
Private Instance Methods
eat_roles(roles, role_permissions, role_restrictions, role_schema_filters, schema_filters)
click to toggle source
# File lib/jungle_path/authorization/filter.rb, line 78 def eat_roles roles, role_permissions, role_restrictions, role_schema_filters, schema_filters puts "eat_roles:" @roles = [] @permissions = {} @restrictions = {} @schema_filter = nil if roles roles.each do |role| puts "role.class: #{role.class}." puts "role: #{role}." @roles << role[:name].to_sym permissions = role_permissions[role[:name].to_sym] if permissions permissions.each do |permission| puts "permission: #{permission}." @permissions[permission.to_sym] = permission.to_sym end end restrictions = role_restrictions[role[:name].to_sym] if restrictions restrictions.each do |restriction| puts "restriction: #{restriction}." @restrictions[restriction.to_sym] = restriction.to_sym end end @schema_filter = schema_filters[role_schema_filters[role[:name].to_sym]] puts "schema_filter: #{@schema_filter}." end end end