Sha256: eefe66de9709c79501e1fd26055fe90f186496132f9057d538a4fa99d7fa7dcc
Contents?: true
Size: 1.74 KB
Versions: 1
Compression:
Stored size: 1.74 KB
Contents
module CanTango class PermissionEngine < Engine module Loader class Permissions < Base attr_accessor :permissions def initialize file_name @file_name = file_name load! end def load_from_hash hash return if hash.empty? hash.each do |type, groups| permissions[type] ||= {} next if groups.nil? groups.each do |group, rules| parser.parse(group, rules) do |permission| permissions[type][permission.name] = permission end end end end def load! load_from_hash yml_content rescue => e raise "PermissionsLoader Error: The permissions for the file #{file_name} could not be loaded - cause was #{e}" end def permissions @permissions ||= Hashie::Mash.new end def parser @parser ||= CanTango::PermissionEngine::Parser::Permissions.new end CanTango.config.permission_engine.types.each do |type| define_method(:"#{type}_permissions") { permissions.send(:"#{type}") } define_method(:"#{type}_compiled_permissions") do type_permissions = send(:"#{type}_permissions") return Hashie::Mash.new if !type_permissions || type_permissions.empty? compiled_sum = send(:"#{type}_permissions").inject({}) do |compiled_sum, (actor, permission)| compiled_sum.merge(permission.to_compiled_hash) end Hashie::Mash.new(compiled_sum) end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cantango-0.9.3.2 | lib/cantango/permission_engine/loader/permissions.rb |