11class 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,49 +16,47 @@ 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- 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- comment : "from <<CloseReason #{ before } >>\n to <<CloseReason #{ after } >>" )
19+ if @close_reason . update ( close_reason_params )
20+ after = @close_reason . attributes . map { |k , v | "#{ k } : #{ v } " } . join ( ' ' )
2221
23- if @close_reason . community . nil?
24- redirect_to close_reasons_path ( global : 1 )
22+ AuditLog . moderator_audit ( event_type : 'close_reason_update' ,
23+ related : @close_reason ,
24+ user : current_user ,
25+ comment : "from <<CloseReason #{ before } >>\n to <<CloseReason #{ after } >>" )
26+
27+ if @close_reason . community . nil?
28+ redirect_to close_reasons_path ( global : 1 )
29+ else
30+ redirect_to close_reasons_path
31+ end
2532 else
26- redirect_to close_reasons_path
33+ render :edit , status : :bad_request
2734 end
2835 end
2936
3037 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
38+ @close_reason = CloseReason . new ( community : params [ :global ] == '1' ? nil : @community )
3739 end
3840
3941 def create
40- if !current_user . is_global_admin && params [ :global ] == '1'
41- not_found!
42- return
43- end
42+ community_params = { community : params [ :global ] == '1' ? nil : @community }
43+ @close_reason = CloseReason . new ( close_reason_params . merge ( community_params ) )
4444
45- @close_reason = CloseReason . new ( name : params [ :close_reason ] [ :name ] ,
46- description : params [ :close_reason ] [ :description ] ,
47- requires_other_post : params [ :close_reason ] [ :requires_other_post ] ,
48- active : params [ :close_reason ] [ :active ] ,
49- community : params [ :global ] == '1' ? nil : @community )
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+
48+ AuditLog . moderator_audit ( event_type : 'close_reason_create' ,
49+ related : @close_reason ,
50+ user : current_user ,
5351 comment : "<<CloseReason #{ attr } >>" )
52+
5453 if @close_reason . community . nil?
5554 redirect_to close_reasons_path ( global : 1 )
5655 else
5756 redirect_to close_reasons_path
5857 end
5958 else
60- render :new
59+ render :new , status : :bad_request
6160 end
6261 end
6362
@@ -71,6 +70,10 @@ def set_close_reason
7170 @close_reason = CloseReason . unscoped . find ( params [ :id ] )
7271 end
7372
73+ def check_create_access
74+ not_found! unless current_user &.global_admin? || params [ :global ] != '1'
75+ end
76+
7477 def verify_admin_for_global_reasons
7578 if !current_user . global_admin? && @close_reason . community . nil?
7679 not_found!
0 commit comments