Sha256: ffa27f387fab90f0b2b479728888748b8b9d798c864612557a41b40353892124

Contents?: true

Size: 801 Bytes

Versions: 2

Compression:

Stored size: 801 Bytes

Contents

PageControllerExtensions = Proc.new do
    
  only_allow_access_to :new, :edit, :create, :update, :remove, :destroy,
    :if => :user_is_in_page_group,
    :denied_url => :back,
    :denied_message => "You must have group privileges to perform this action."
  
  def user_is_in_page_group
    return true if current_user.admin? || current_user.designer_or_developer?
    
    page = Page.find(params[:id] || params[:page_id] || params[:parent_id] || params[:page][:parent_id])
    
    until page.nil? do
      return true if page.group_owners.include? current_user
      page = page.parent
    end
    
    return false
  end
  
  before_filter :disallow_group_edits
  def disallow_group_edits
    if params[:page] && !current_user.admin?
      params[:page].delete(:group_id.to_s)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
radiant-page_group_permissions-extension-1.0.1 lib/controller_extensions.rb
radiant-page_group_permissions-extension-1.0.0 lib/controller_extensions.rb