class Fib::PermissionsCollection
Attributes
container[RW]
package[R]
permissions[R]
Public Class Methods
build_by_permissions(permissions)
click to toggle source
# File lib/fib/permissions_collection.rb, line 129 def build_by_permissions permissions return unless permissions.is_a? Array new.tap { |p| p.append(*permissions) } end
new()
click to toggle source
# File lib/fib/permissions_collection.rb, line 11 def initialize @permissions = {} @package = Fib::ElementPackage.new end
Public Instance Methods
&(permission_collection)
click to toggle source
# File lib/fib/permissions_collection.rb, line 72 def & permission_collection raise ParameterIsNotValid, "must be permission_collection" unless permission_collection.is_a?(Fib::PermissionsCollection) current_permission_values = permissions.values build_new { append *(current_permission_values & permission_collection.permissions.values).flatten } end
+(permission_collection)
click to toggle source
# File lib/fib/permissions_collection.rb, line 56 def + permission_collection raise ParameterIsNotValid, "must be permission_collection" unless permission_collection.is_a?(Fib::PermissionsCollection) current_permission_values = permissions.values build_new { append *(current_permission_values | permission_collection.permissions.values).flatten } end
Also aliased as: |
-(permission_collection)
click to toggle source
# File lib/fib/permissions_collection.rb, line 65 def - permission_collection raise ParameterIsNotValid, "must be permission_collection" unless permission_collection.is_a?(Fib::PermissionsCollection) current_permission_values = permissions.values build_new { append *(current_permission_values - permission_collection.permissions.values).flatten } end
add(key, name="", options={})
click to toggle source
# File lib/fib/permissions_collection.rb, line 91 def add key, name="", options={}, &block return unless key.present? keys = [options[:key] || []].flatten urls = [options[:url] || []].flatten bind = [options[:bind] || []].flatten actions = options[:action] || [] display = options[:display] if options.key? :display # 构建权限对象 permission = Fib::Permission.new key, name: name # 默认创建一个与permission key相同的element key类型 permission.append Fib::Element.create_key key permission.append keys.map{ |k| Fib::Element.create_key k } permission.append urls.map{ |u| Fib::Element.create_url u } permission.append actions.map{ |a| controller = a.shift a.map { |action| Fib::Element.create_action controller, action } }.flatten permission.bind_permission bind display ? permission.display_on : permission.display_off unless display.nil? # 执行自定义闭包 permission.instance_exec &block if block_given? # 设置elements所属permission permission.inject_elements_permission permission.container = container # 将该权限放入集合 set permission end
build_new(&block)
click to toggle source
# File lib/fib/permissions_collection.rb, line 87 def build_new &block self.class.new.tap { |n| n.instance_exec(&block) if block_given? } end
build_package()
click to toggle source
# File lib/fib/permissions_collection.rb, line 52 def build_package @package = Fib::ElementPackage.merge *permission_packages end
empty?()
click to toggle source
# File lib/fib/permissions_collection.rb, line 44 def empty? permissions.keys.size == 0 end
extract_by_keys(keys)
click to toggle source
# File lib/fib/permissions_collection.rb, line 79 def extract_by_keys keys Fib::PermissionsCollection.build_by_permissions select_permissions_by_keys(keys) end
keys()
click to toggle source
# File lib/fib/permissions_collection.rb, line 21 def keys permissions.keys end
mset(*permissions)
click to toggle source
# File lib/fib/permissions_collection.rb, line 34 def mset *permissions permissions.flatten.each do |p| next unless p.is_a?(Fib::Permission) @permissions[p.key] = p end build_package end
Also aliased as: append
permission_packages()
click to toggle source
# File lib/fib/permissions_collection.rb, line 48 def permission_packages (permissions.values.map(&:package) + permissions.values.map(&:bind_packages)).flatten.uniq end
permissions_info()
click to toggle source
# File lib/fib/permissions_collection.rb, line 16 def permissions_info permissions.values.select { |v| v.display } .map { |v| [v.key, v.name] } end
select_permissions_by_keys(keys)
click to toggle source
# File lib/fib/permissions_collection.rb, line 83 def select_permissions_by_keys keys permissions.select { |k, v| keys.include? k }.values end
set(permission)
click to toggle source
# File lib/fib/permissions_collection.rb, line 25 def set permission raise ParameterIsNotValid, "set method can't accept expect permission object" unless permission.is_a?(Fib::Permission) raise ParameterIsNotValid, "permission key #{permission.key} is exist" if permissions.has_key? permission.key mset permission end
Also aliased as: <<