Class: Ez::Permissions::Roles::PermissionsCell

Inherits:
ApplicationCell
  • Object
show all
Defined in:
app/cells/ez/permissions/roles/permissions_cell.rb

Constant Summary collapse

COMMON_ACTIONS_ORDER =
Ez::Permissions.config.ui_actions_ordering || %w[create read update delete].freeze

Constants inherited from ApplicationCell

ApplicationCell::BASE_ROUTES, ApplicationCell::CSS_SCOPE, ApplicationCell::I18N_SCOPE

Instance Method Summary collapse

Methods inherited from ApplicationCell

#css_for, #custom_css_map, #div_for, form, #path_for, #t

Instance Method Details

#actions_namesObject



19
20
21
22
23
24
# File 'app/cells/ez/permissions/roles/permissions_cell.rb', line 19

def actions_names
  @actions_names ||= permissions_actions
                     .map(&:action)
                     .uniq
                     .sort_by { |a| (COMMON_ACTIONS_ORDER.index(a).to_s || a) }
end

#all_granted?(resource_name = nil) ⇒ Boolean

Returns:

  • (Boolean)


73
74
75
76
77
78
79
80
# File 'app/cells/ez/permissions/roles/permissions_cell.rb', line 73

def all_granted?(resource_name = nil)
  if resource_name
    role_permissions.select { |p| p.resource == resource_name }.size ==
      permissions_actions.select { |p| p.resource == resource_name }.size
  else
    role_permissions.size == permissions_actions.size
  end
end

#form_urlObject



82
83
84
# File 'app/cells/ez/permissions/roles/permissions_cell.rb', line 82

def form_url
  "#{Ez::Permissions.config.ui_base_routes}/roles/#{model.id}/permissions"
end

#granted_permission?(permission_id) ⇒ Boolean

Returns:

  • (Boolean)


50
51
52
# File 'app/cells/ez/permissions/roles/permissions_cell.rb', line 50

def granted_permission?(permission_id)
  role_permission_ids.include?(permission_id)
end

#group_namesObject



15
16
17
# File 'app/cells/ez/permissions/roles/permissions_cell.rb', line 15

def group_names
  @group_names ||= groups.keys.compact.map(&:to_s).sort.map(&:to_sym)
end

#groupsObject



11
12
13
# File 'app/cells/ez/permissions/roles/permissions_cell.rb', line 11

def groups
  @groups ||= Ez::Permissions::DSL.resources.group_by(&:group)
end

#permission_checkbox(resource_name, action_name) ⇒ Object



54
55
56
57
58
59
60
61
62
63
# File 'app/cells/ez/permissions/roles/permissions_cell.rb', line 54

def permission_checkbox(resource_name, action_name)
  permission_id = permission_id(resource_name, action_name)

  return unless permission_id

  check_box_tag 'permissions[]',
                permission_id,
                granted_permission?(permission_id),
                id: "permission-checkbox-#{resource_name}-#{action_name}"
end

#permission_id(resource_name, action_name) ⇒ Object



46
47
48
# File 'app/cells/ez/permissions/roles/permissions_cell.rb', line 46

def permission_id(resource_name, action_name)
  permissions_actions.find { |p| p.resource == resource_name && p.action == action_name }&.id
end

#permissions_actionsObject



34
35
36
# File 'app/cells/ez/permissions/roles/permissions_cell.rb', line 34

def permissions_actions
  @permissions_actions ||= Ez::Permissions::Permission.all.to_a
end

#permissions_label(resource_name, action_name) ⇒ Object



65
66
67
68
69
70
71
# File 'app/cells/ez/permissions/roles/permissions_cell.rb', line 65

def permissions_label(resource_name, action_name)
  permission_id = permission_id(resource_name, action_name)

  return unless permission_id

  label_tag "permission-checkbox-#{resource_name}-#{action_name}", action_name.humanize
end

#resource_by(name) ⇒ Object



30
31
32
# File 'app/cells/ez/permissions/roles/permissions_cell.rb', line 30

def resource_by(name)
  Ez::Permissions::DSL.resources.find { |r| r.name == name.to_sym }
end

#resources_namesObject



26
27
28
# File 'app/cells/ez/permissions/roles/permissions_cell.rb', line 26

def resources_names
  @resources_names ||= permissions_actions.map(&:resource).uniq.sort
end

#role_permission_idsObject



42
43
44
# File 'app/cells/ez/permissions/roles/permissions_cell.rb', line 42

def role_permission_ids
  @role_permission_ids ||= role_permissions.map(&:id)
end

#role_permissionsObject



38
39
40
# File 'app/cells/ez/permissions/roles/permissions_cell.rb', line 38

def role_permissions
  @role_permissions ||= model.permissions.to_a
end