Skip to content

Commit 7518743

Browse files
authored
Merge pull request #1733 from codidact/0valt/1717/close-reasons
Minor improvements to close reasons handling
2 parents a6ced92 + e9f19f2 commit 7518743

File tree

3 files changed

+27
-19
lines changed

3 files changed

+27
-19
lines changed

app/controllers/close_reasons_controller.rb

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
class CloseReasonsController < ApplicationController
22
before_action :verify_moderator
3+
before_action :check_create_access, only: [:new, :create]
34
before_action :set_close_reason, only: [:edit, :update]
45
before_action :verify_admin_for_global_reasons, only: [:edit, :update]
56

67
def index
7-
@close_reasons = if current_user.is_global_admin && params[:global] == '1'
8+
@close_reasons = if current_user.global_admin? && params[:global] == '1'
89
CloseReason.unscoped.where(community_id: nil)
910
else
1011
CloseReason.unscoped.where(community_id: @community.id)
@@ -15,9 +16,12 @@ def edit; end
1516

1617
def update
1718
before = @close_reason.attributes.map { |k, v| "#{k}: #{v}" }.join(' ')
18-
@close_reason.update close_reason_params
19+
@close_reason.update(close_reason_params)
1920
after = @close_reason.attributes.map { |k, v| "#{k}: #{v}" }.join(' ')
20-
AuditLog.moderator_audit(event_type: 'close_reason_update', related: @close_reason, user: current_user,
21+
22+
AuditLog.moderator_audit(event_type: 'close_reason_update',
23+
related: @close_reason,
24+
user: current_user,
2125
comment: "from <<CloseReason #{before}>>\nto <<CloseReason #{after}>>")
2226

2327
if @close_reason.community.nil?
@@ -28,29 +32,23 @@ def update
2832
end
2933

3034
def new
31-
if !current_user.is_global_admin && params[:global] == '1'
32-
not_found!
33-
return
34-
end
35-
36-
@close_reason = CloseReason.new
35+
@close_reason = CloseReason.new(community: params[:global] == '1' ? nil : @community)
3736
end
3837

3938
def create
40-
if !current_user.is_global_admin && params[:global] == '1'
41-
not_found!
42-
return
43-
end
44-
4539
@close_reason = CloseReason.new(name: params[:close_reason][:name],
4640
description: params[:close_reason][:description],
4741
requires_other_post: params[:close_reason][:requires_other_post],
4842
active: params[:close_reason][:active],
4943
community: params[:global] == '1' ? nil : @community)
44+
5045
if @close_reason.save
5146
attr = @close_reason.attributes_print
52-
AuditLog.moderator_audit(event_type: 'close_reason_create', related: @close_reason, user: current_user,
47+
AuditLog.moderator_audit(event_type: 'close_reason_create',
48+
related: @close_reason,
49+
user: current_user,
5350
comment: "<<CloseReason #{attr}>>")
51+
5452
if @close_reason.community.nil?
5553
redirect_to close_reasons_path(global: 1)
5654
else
@@ -71,6 +69,10 @@ def set_close_reason
7169
@close_reason = CloseReason.unscoped.find(params[:id])
7270
end
7371

72+
def check_create_access
73+
not_found! unless current_user&.global_admin? || params[:global] != '1'
74+
end
75+
7476
def verify_admin_for_global_reasons
7577
if !current_user.global_admin? && @close_reason.community.nil?
7678
not_found!

app/views/close_reasons/_form.html.erb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
<%#
2+
Instance variables:
3+
@close_reason : close reason to edit
4+
5+
Variables:
6+
submit_url : route URL to submit the form to
7+
%>
8+
19
<%= form_for @close_reason, url: submit_url do |f| %>
210
<div class="form-group">
311
<%= f.label :name, "Name", class: "form-element" %>

test/controllers/close_reasons_controller_test.rb

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
class CloseReasonsControllerTest < ActionController::TestCase
44
include Devise::Test::ControllerHelpers
55

6-
PARAM_LESS_ACTIONS = [:index, :new].freeze
7-
86
test 'should get index' do
97
sign_in users(:admin)
108
get :index
@@ -14,15 +12,15 @@ class CloseReasonsControllerTest < ActionController::TestCase
1412

1513
test 'should deny anonymous users access' do
1614
sign_out :user
17-
PARAM_LESS_ACTIONS.each do |path|
15+
[:index, :new].each do |path|
1816
get path
1917
assert_response(:not_found)
2018
end
2119
end
2220

2321
test 'should deny standard users access' do
2422
sign_in users(:standard_user)
25-
PARAM_LESS_ACTIONS.each do |path|
23+
[:index, :new].each do |path|
2624
get path
2725
assert_response(:not_found)
2826
end

0 commit comments

Comments
 (0)