pundit: convert post approvals to pundit.

This commit is contained in:
evazion
2020-03-19 20:04:59 -05:00
parent cbee23f9ad
commit 84c654464d
3 changed files with 16 additions and 4 deletions

View File

@@ -1,15 +1,14 @@
class PostApprovalsController < ApplicationController
before_action :approver_only, only: [:create]
respond_to :html, :xml, :json, :js
def create
post = Post.find(params[:post_id])
@approval = post.approve!
@approval = authorize PostApproval.new(user: CurrentUser.user, post_id: params[:post_id])
@approval.save
respond_with(@approval)
end
def index
@post_approvals = PostApproval.paginated_search(params)
@post_approvals = authorize PostApproval.paginated_search(params)
@post_approvals = @post_approvals.includes(:user, post: :uploader) if request.format.html?
respond_with(@post_approvals)

View File

@@ -0,0 +1,5 @@
class PostApprovalPolicy < ApplicationPolicy
def create?
user.is_approver?
end
end

View File

@@ -26,6 +26,14 @@ class PostApprovalsControllerTest < ActionDispatch::IntegrationTest
assert(!@post.reload.is_deleted?)
end
end
should "not allow non-approvers to approve posts" do
@post = create(:post, is_pending: true)
post_auth post_approvals_path(post_id: @post.id, format: :js), create(:user)
assert_response 403
assert_equal(true, @post.reload.is_pending?)
end
end
context "index action" do