Module: DoRole::PermissionManageable
- Extended by:
- ActiveSupport::Concern
- Included in:
- Role
- Defined in:
- lib/do_role/concerns/permission_manageable.rb
Instance Method Summary collapse
-
#add_permission(permission) ⇒ Object
添加权限.
-
#all_permissions ⇒ Object
获取所有权限.
-
#cached_permissions ⇒ Object
带缓存的权限.
-
#computed_permissions ⇒ Object
计算完整权限路径.
-
#has_permission?(permission) ⇒ Boolean
检查是否拥有某个权限.
-
#remove_permission(permission) ⇒ Object
移除权限.
Instance Method Details
#add_permission(permission) ⇒ Object
添加权限
22 23 24 25 |
# File 'lib/do_role/concerns/permission_manageable.rb', line 22 def () () (, :add) end |
#all_permissions ⇒ Object
获取所有权限
34 35 36 |
# File 'lib/do_role/concerns/permission_manageable.rb', line 34 def end |
#cached_permissions ⇒ Object
带缓存的权限
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/do_role/concerns/permission_manageable.rb', line 52 def @cached_permissions ||= begin = .deep_dup if parent_role = parent_role. .deep_merge!() { |_, old_val, new_val| Array.wrap(old_val) | Array.wrap(new_val) } end end end |
#computed_permissions ⇒ Object
计算完整权限路径
39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/do_role/concerns/permission_manageable.rb', line 39 def .flat_map do |namespace, actions| if actions.is_a?(Hash) actions.flat_map do |sub_namespace, sub_actions| Array.wrap(sub_actions).map { |action| "#{namespace}.#{sub_namespace}.#{action}" } end else Array.wrap(actions).map { |action| "#{namespace}.#{action}" } end end end |
#has_permission?(permission) ⇒ Boolean
检查是否拥有某个权限
15 16 17 18 19 |
# File 'lib/do_role/concerns/permission_manageable.rb', line 15 def () return false if .blank? namespace, action = () .dig(namespace)&.include?(action) end |
#remove_permission(permission) ⇒ Object
移除权限
28 29 30 31 |
# File 'lib/do_role/concerns/permission_manageable.rb', line 28 def () return if .blank? (, :remove) end |