1234567891011121314151617181920212223242526272829303132333435 |
- module ChecksUserAttributesByCurrentUserPermission
- extend ActiveSupport::Concern
- private
- def check_attributes_by_current_user_permission(params)
- authorize!
- # admins can do whatever they want
- return true if current_user.permissions?('admin.user')
- # regular agents are not allowed to set Groups and Roles
- %w[Role Group].each do |model|
- %w[_ids s].each do |suffix|
- attribute = "#{model.downcase}#{suffix}"
- values = params[attribute]
- next if values.nil?
- logger.warn "#{model} assignment is only allowed by admin! User with ID #{current_user.id} tried to assign #{values.inspect}"
- params.delete(attribute)
- end
- end
- # check for create requests and set
- # signup roles if no other roles are given
- return true if params[:id].present?
- return true if params[:role_ids]
- return true if params[:roles]
- params[:role_ids] = Role.signup_role_ids
- true
- end
- end
|