Class: EasyAdmin::Permissions::Component::PermissionCaseBuilder
- Inherits:
-
Object
- Object
- EasyAdmin::Permissions::Component::PermissionCaseBuilder
- Defined in:
- lib/easy_admin/permissions/component.rb
Overview
Helper class for building conditional permission rendering
Instance Method Summary collapse
-
#initialize(component, context) ⇒ PermissionCaseBuilder
constructor
A new instance of PermissionCaseBuilder.
- #otherwise(&block) ⇒ Object
- #render ⇒ Object
- #when_can(permission_name, &block) ⇒ Object
- #when_has_role(role_name, &block) ⇒ Object
Constructor Details
#initialize(component, context) ⇒ PermissionCaseBuilder
Returns a new instance of PermissionCaseBuilder.
127 128 129 130 131 132 |
# File 'lib/easy_admin/permissions/component.rb', line 127 def initialize(component, context) @component = component @context = context @cases = [] @else_block = nil end |
Instance Method Details
#otherwise(&block) ⇒ Object
144 145 146 147 |
# File 'lib/easy_admin/permissions/component.rb', line 144 def otherwise(&block) @else_block = block self end |
#render ⇒ Object
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/easy_admin/permissions/component.rb', line 149 def render @cases.each do |case_item| case case_item[:type] when :permission if @component.current_user_can?(case_item[:name], context: @context) return case_item[:block].call if case_item[:block] end when :role if @component.current_user_has_role?(case_item[:name], context: @context) return case_item[:block].call if case_item[:block] end end end @else_block&.call end |
#when_can(permission_name, &block) ⇒ Object
134 135 136 137 |
# File 'lib/easy_admin/permissions/component.rb', line 134 def when_can(, &block) @cases << { type: :permission, name: , block: block } self end |
#when_has_role(role_name, &block) ⇒ Object
139 140 141 142 |
# File 'lib/easy_admin/permissions/component.rb', line 139 def when_has_role(role_name, &block) @cases << { type: :role, name: role_name, block: block } self end |