-
Notifications
You must be signed in to change notification settings - Fork 407
/
moderation_reports_controller.rb
43 lines (34 loc) · 1.3 KB
/
moderation_reports_controller.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class ModerationReportsController < ApplicationController
respond_to :html, :xml, :json, :js
before_action :builder_only, only: [:new, :create]
before_action :moderator_only, only: [:index]
def new
@moderation_report = ModerationReport.new(moderation_report_params)
check_privilege(@moderation_report)
respond_with(@moderation_report)
end
def index
@moderation_reports = ModerationReport.paginated_search(params, count_pages: true).includes(:creator, :model)
respond_with(@moderation_reports)
end
def create
@moderation_report = ModerationReport.new(moderation_report_params.merge(creator: CurrentUser.user))
check_privilege(@moderation_report)
@moderation_report.save
flash.now[:notice] = @moderation_report.valid? ? "Report submitted" : @moderation_report.errors.full_messages.join("; ")
respond_with(@moderation_report)
end
private
def model_type
params.fetch(:moderation_report, {}).fetch(:model_type)
end
def model_id
params.fetch(:moderation_report, {}).fetch(:model_id)
end
def check_privilege(moderation_report)
raise User::PrivilegeError unless moderation_report.model.reportable_by?(CurrentUser.user)
end
def moderation_report_params
params.fetch(:moderation_report, {}).permit(%i[model_type model_id reason])
end
end