]> git.openstreetmap.org Git - rails.git/blob - app/controllers/reports_controller.rb
Add frozen_string_literal comments to ruby files
[rails.git] / app / controllers / reports_controller.rb
1 # frozen_string_literal: true
2
3 class ReportsController < ApplicationController
4   layout :site_layout
5
6   before_action :authorize_web
7   before_action :set_locale
8   before_action :check_database_readable
9
10   authorize_resource
11
12   before_action :check_database_writable, :only => [:new, :create]
13
14   def new
15     if required_new_report_params_present?
16       @report = Report.new
17       @report.issue = Issue.find_or_initialize_by(create_new_report_params)
18     else
19       head :bad_request
20     end
21   end
22
23   def create
24     @report = current_user.reports.new(report_params)
25     @report.issue = Issue
26                     .create_with(:assigned_role => default_assigned_role)
27                     .find_or_initialize_by(issue_params)
28
29     if @report.save
30       @report.issue.assigned_role = "administrator" if default_assigned_role == "administrator"
31       @report.issue.reopen unless @report.issue.open?
32       @report.issue.save!
33
34       @report.issue.reported_user&.spam_check
35
36       redirect_to helpers.reportable_url(@report.issue.reportable), :notice => t(".successful_report")
37     else
38       flash.now[:warning] = t(".provide_details")
39       render :action => "new"
40     end
41   end
42
43   private
44
45   def required_new_report_params_present?
46     create_new_report_params["reportable_id"].present? && create_new_report_params["reportable_type"].present?
47   end
48
49   def create_new_report_params
50     params.permit(:reportable_id, :reportable_type)
51   end
52
53   def report_params
54     params.expect(:report => [:details, :category])
55   end
56
57   def issue_params
58     params.require(:report).require(:issue).permit(:reportable_id, :reportable_type)
59   end
60
61   def default_assigned_role
62     case issue_params[:reportable_type]
63     when "Note"
64       "moderator"
65     when "User"
66       case report_params[:category]
67       when "vandal" then "moderator"
68       else "administrator"
69       end
70     else
71       "administrator"
72     end
73   end
74 end