11module ForestLiana
22 class ResourcesController < ForestLiana ::ApplicationController
3+ include ForestLiana ::Ability
34 begin
45 prepend ResourcesExtensions
56 rescue NameError
@@ -14,24 +15,11 @@ class ResourcesController < ForestLiana::ApplicationController
1415 end
1516
1617 def index
18+ action = request . format == 'csv' ? 'export' : 'browse'
19+ forest_authorize! ( action , forest_user , @resource )
1720 begin
18- if request . format == 'csv'
19- checker = ForestLiana ::PermissionsChecker . new ( @resource , 'exportEnabled' , @rendering_id , user : forest_user )
20- return head :forbidden unless checker . is_authorized?
21- else
22- checker = ForestLiana ::PermissionsChecker . new (
23- @resource ,
24- 'browseEnabled' ,
25- @rendering_id ,
26- user : forest_user ,
27- collection_list_parameters : get_collection_list_permission_info ( forest_user , request )
28- )
29- return head :forbidden unless checker . is_authorized?
30- end
31-
3221 getter = ForestLiana ::ResourcesGetter . new ( @resource , params , forest_user )
3322 getter . perform
34-
3523 respond_to do |format |
3624 format . json { render_jsonapi ( getter ) }
3725 format . csv { render_csv ( getter , @resource ) }
@@ -55,16 +43,8 @@ def index
5543
5644 def count
5745 find_resource
46+ forest_authorize! ( 'browse' , forest_user , @resource )
5847 begin
59- checker = ForestLiana ::PermissionsChecker . new (
60- @resource ,
61- 'browseEnabled' ,
62- @rendering_id ,
63- user : forest_user ,
64- collection_list_parameters : get_collection_list_permission_info ( forest_user , request )
65- )
66- return head :forbidden unless checker . is_authorized?
67-
6848 getter = ForestLiana ::ResourcesGetter . new ( @resource , params , forest_user )
6949 getter . count
7050
@@ -88,10 +68,8 @@ def count
8868 end
8969
9070 def show
71+ forest_authorize! ( 'read' , forest_user , @resource )
9172 begin
92- checker = ForestLiana ::PermissionsChecker . new ( @resource , 'readEnabled' , @rendering_id , user : forest_user )
93- return head :forbidden unless checker . is_authorized?
94-
9573 getter = ForestLiana ::ResourceGetter . new ( @resource , params , forest_user )
9674 getter . perform
9775
@@ -106,10 +84,8 @@ def show
10684 end
10785
10886 def create
87+ forest_authorize! ( 'add' , forest_user , @resource )
10988 begin
110- checker = ForestLiana ::PermissionsChecker . new ( @resource , 'addEnabled' , @rendering_id , user : forest_user )
111- return head :forbidden unless checker . is_authorized?
112-
11389 creator = ForestLiana ::ResourceCreator . new ( @resource , params )
11490 creator . perform
11591
@@ -130,10 +106,8 @@ def create
130106 end
131107
132108 def update
109+ forest_authorize! ( 'edit' , forest_user , @resource )
133110 begin
134- checker = ForestLiana ::PermissionsChecker . new ( @resource , 'editEnabled' , @rendering_id , user : forest_user )
135- return head :forbidden unless checker . is_authorized?
136-
137111 updater = ForestLiana ::ResourceUpdater . new ( @resource , params , forest_user )
138112 updater . perform
139113
@@ -154,37 +128,37 @@ def update
154128 end
155129
156130 def destroy
157- checker = ForestLiana ::PermissionsChecker . new ( @resource , 'deleteEnabled' , @rendering_id , user : forest_user )
158- return head :forbidden unless checker . is_authorized?
131+ forest_authorize! ( 'delete' , forest_user , @resource )
132+ begin
133+ collection_name = ForestLiana . name_for ( @resource )
134+ scoped_records = ForestLiana ::ScopeManager . apply_scopes_on_records ( @resource , forest_user , collection_name , params [ :timezone ] )
159135
160- collection_name = ForestLiana . name_for ( @resource )
161- scoped_records = ForestLiana ::ScopeManager . apply_scopes_on_records ( @resource , forest_user , collection_name , params [ :timezone ] )
162-
163- unless scoped_records . exists? ( params [ :id ] )
164- return render serializer : nil , json : { status : 404 } , status : :not_found
165- end
136+ unless scoped_records . exists? ( params [ :id ] )
137+ return render serializer : nil , json : { status : 404 } , status : :not_found
138+ end
166139
167- scoped_records . destroy ( params [ :id ] )
140+ scoped_records . destroy ( params [ :id ] )
168141
169- head :no_content
170- rescue => error
171- FOREST_REPORTER . report error
172- FOREST_LOGGER . error "Record Destroy error: #{ error } \n #{ format_stacktrace ( error ) } "
173- internal_server_error
142+ head :no_content
143+ rescue => error
144+ FOREST_REPORTER . report error
145+ FOREST_LOGGER . error "Record Destroy error: #{ error } \n #{ format_stacktrace ( error ) } "
146+ internal_server_error
147+ end
174148 end
175149
176150 def destroy_bulk
177- checker = ForestLiana ::PermissionsChecker . new ( @resource , 'deleteEnabled' , @rendering_id , user : forest_user )
178- return head :forbidden unless checker . is_authorized?
179-
180- ids = ForestLiana ::ResourcesGetter . get_ids_from_request ( params , forest_user )
181- @resource . destroy ( ids ) if ids &.any?
151+ forest_authorize! ( 'delete' , forest_user , @resource )
152+ begin
153+ ids = ForestLiana ::ResourcesGetter . get_ids_from_request ( params , forest_user )
154+ @resource . destroy ( ids ) if ids &.any?
182155
183- head :no_content
184- rescue => error
185- FOREST_REPORTER . report error
186- FOREST_LOGGER . error "Records Destroy error: #{ error } \n #{ format_stacktrace ( error ) } "
187- internal_server_error
156+ head :no_content
157+ rescue => error
158+ FOREST_REPORTER . report error
159+ FOREST_LOGGER . error "Records Destroy error: #{ error } \n #{ format_stacktrace ( error ) } "
160+ internal_server_error
161+ end
188162 end
189163
190164 private
0 commit comments