Use load_and_authorize_resource in versions controlller
This commit is contained in:
parent
71c8dd4127
commit
58a3913735
2 changed files with 9 additions and 16 deletions
|
|
@ -1,26 +1,23 @@
|
||||||
module Admin
|
module Admin
|
||||||
class VersionsController < Admin::BaseController
|
class VersionsController < Admin::BaseController
|
||||||
skip_authorization_check
|
load_and_authorize_resource class: PaperTrail::Version
|
||||||
|
|
||||||
def index
|
def index
|
||||||
authorize! :index, PaperTrail::Version.new(item_type: 'User')
|
authorize! :index, PaperTrail::Version.new(item_type: 'User')
|
||||||
@conf_ids_for_organizer = current_user.is_admin? ? Conference.pluck(:id) : Conference.with_role(:organizer, current_user).pluck(:id)
|
@conf_ids_for_organizer = current_user.is_admin? ? Conference.pluck(:id) : Conference.with_role(:organizer, current_user).pluck(:id)
|
||||||
@conference_id = params[:conference_id].to_i unless params[:conference_id].nil?
|
@conference_id = params[:conference_id].to_i unless params[:conference_id].nil?
|
||||||
if @conference_id.nil?
|
|
||||||
@versions = PaperTrail::Version.where(["conference_id IN (?) OR item_type = 'User'", @conf_ids_for_organizer])
|
unless @conference_id.nil? || Conference.exists?(id: @conference_id)
|
||||||
elsif !Conference.exists?(id: @conference_id)
|
|
||||||
redirect_to admin_revision_history_path, error: "Conference with ID #{@conference_id} does not exist!"
|
redirect_to admin_revision_history_path, error: "Conference with ID #{@conference_id} does not exist!"
|
||||||
return
|
return
|
||||||
else
|
|
||||||
authorize! :index, PaperTrail::Version.new(conference_id: @conference_id)
|
|
||||||
@versions = PaperTrail::Version.where(conference_id: @conference_id)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
return unless @conference_id.present?
|
||||||
|
authorize! :index, PaperTrail::Version.new(conference_id: @conference_id)
|
||||||
|
@versions = @versions.where(conference_id: @conference_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def revert_attribute
|
def revert_attribute
|
||||||
@version = PaperTrail::Version.find(params[:id])
|
|
||||||
authorize! :revert_attribute, @version
|
|
||||||
|
|
||||||
if params[:attribute] && @version.changeset.reject{ |_, values| values[0].blank? && values[1].blank? }.keys.include?(params[:attribute])
|
if params[:attribute] && @version.changeset.reject{ |_, values| values[0].blank? && values[1].blank? }.keys.include?(params[:attribute])
|
||||||
if @version.item[params[:attribute]] == @version.changeset[params[:attribute]][0]
|
if @version.item[params[:attribute]] == @version.changeset[params[:attribute]][0]
|
||||||
flash[:error] = 'The item is already in the state that you are trying to revert it back to'
|
flash[:error] = 'The item is already in the state that you are trying to revert it back to'
|
||||||
|
|
@ -42,9 +39,6 @@ module Admin
|
||||||
end
|
end
|
||||||
|
|
||||||
def revert_object
|
def revert_object
|
||||||
@version = PaperTrail::Version.find(params[:id])
|
|
||||||
authorize! :revert_object, @version
|
|
||||||
|
|
||||||
if @version.event != 'create'
|
if @version.event != 'create'
|
||||||
if @version.reify.save
|
if @version.reify.save
|
||||||
flash[:notice] = 'The selected change was successfully reverted'
|
flash[:notice] = 'The selected change was successfully reverted'
|
||||||
|
|
|
||||||
|
|
@ -178,9 +178,8 @@ class Ability
|
||||||
role.resource_type == 'Conference' && (conf_ids_for_organizer.include? role.resource_id)
|
role.resource_type == 'Conference' && (conf_ids_for_organizer.include? role.resource_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
can [:index, :revert_object, :revert_attribute], PaperTrail::Version do |version|
|
can [:index, :revert_object, :revert_attribute], PaperTrail::Version, item_type: 'User'
|
||||||
version.item_type == 'User' || (conf_ids_for_organizer.include? version.conference_id)
|
can [:index, :revert_object, :revert_attribute], PaperTrail::Version, conference_id: conf_ids_for_organizer
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def signed_in_with_cfp_role(user)
|
def signed_in_with_cfp_role(user)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue