25 lines
706 B
Ruby
25 lines
706 B
Ruby
class PseudPolicy < ApplicationPolicy
|
|
# Roles that allow updating a pseud.
|
|
EDIT_ROLES = %w[superadmin policy_and_abuse].freeze
|
|
|
|
def can_edit?
|
|
user_has_roles?(EDIT_ROLES)
|
|
end
|
|
|
|
# Define which roles can update which attributes.
|
|
ALLOWED_ATTRIBUTES_BY_ROLES = {
|
|
"superadmin" => [:delete_icon, :description, :ticket_number],
|
|
"policy_and_abuse" => [:delete_icon, :description, :ticket_number]
|
|
}.freeze
|
|
|
|
def permitted_attributes
|
|
if user.is_a?(Admin)
|
|
ALLOWED_ATTRIBUTES_BY_ROLES.values_at(*user.roles).compact.flatten
|
|
else
|
|
[:name, :description, :is_default, :icon, :delete_icon, :icon_alt_text,
|
|
:icon_comment_text]
|
|
end
|
|
end
|
|
|
|
alias update? can_edit?
|
|
end
|