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