Skip to content

Commit fb83d5b

Browse files
authored
fix guardian access to settings pages (#430)
Co-authored-by: Timo Huber <timo.huber@econ.uzh.ch>
1 parent 824a42d commit fb83d5b

File tree

9 files changed

+37
-9
lines changed

9 files changed

+37
-9
lines changed

pool/pool_queue/entity_guard.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module Access = struct
33
open ValidationSet
44
open Permission
55

6-
let index = one_of_tuple (Read, `Queue, None)
6+
let index ?id () = one_of_tuple (Read, `Queue, id)
77
let read = one_of_tuple (Read, `Queue, None)
88
let resend = one_of_tuple (Create, `Queue, None)
99
end

pool/web/handler/admin_contacts.ml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,8 @@ end = struct
499499
include Helpers.Access
500500
module Guardian = Middleware.Guardian
501501

502+
let contact_effects = Guardian.id_effects Contact.Id.of_string Field.Contact
503+
502504
let index =
503505
Contact.Guard.Access.index |> Guardian.validate_admin_entity ~any_id:true
504506
;;
@@ -545,6 +547,11 @@ end = struct
545547
let promote = Admin.Guard.Access.create |> Guardian.validate_admin_entity
546548

547549
let message_history =
548-
Pool_queue.Guard.Access.index |> Guardian.validate_admin_entity
550+
(fun id ->
551+
Pool_queue.Guard.Access.index
552+
~id:(Guard.Uuid.target_of Contact.Id.value id)
553+
())
554+
|> contact_effects
555+
|> Guardian.validate_generic
549556
;;
550557
end

pool/web/handler/admin_experiments.ml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -617,6 +617,11 @@ end = struct
617617
let search = index
618618

619619
let message_history =
620-
Pool_queue.Guard.Access.index |> Guardian.validate_admin_entity
620+
(fun id ->
621+
Pool_queue.Guard.Access.index
622+
~id:(Guard.Uuid.target_of Experiment.Id.value id)
623+
())
624+
|> experiment_effects
625+
|> Guardian.validate_generic
621626
;;
622627
end

pool/web/handler/admin_filter.ml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,11 @@ module Access : module type of Helpers.Access = struct
356356
module Guardian = Middleware.Guardian
357357

358358
let filter_effects = Guardian.id_effects Filter.Id.of_string Field.Filter
359-
let index = Filter.Guard.Access.index |> Guardian.validate_admin_entity
359+
360+
let index =
361+
Filter.Guard.Access.index |> Guardian.validate_admin_entity ~any_id:true
362+
;;
363+
360364
let create = Command.Create.effects () |> Guardian.validate_admin_entity
361365

362366
let update =

pool/web/handler/admin_organisational_units.ml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,8 @@ module Access : module type of Helpers.Access = struct
123123
;;
124124

125125
let index =
126-
Organisational_unit.Guard.Access.index |> Guardian.validate_admin_entity
126+
Organisational_unit.Guard.Access.index
127+
|> Guardian.validate_admin_entity ~any_id:true
127128
;;
128129

129130
let create = Command.Create.effects |> Guardian.validate_admin_entity

pool/web/handler/admin_settings_queue.ml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,11 @@ end = struct
7474
include Helpers.Access
7575
module Guardian = Middleware.Guardian
7676

77-
let index = Pool_queue.Guard.Access.index |> Guardian.validate_admin_entity
77+
let index =
78+
Pool_queue.Guard.Access.index ()
79+
|> Guardian.validate_admin_entity ~any_id:true
80+
;;
81+
7882
let read = Pool_queue.Guard.Access.read |> Guardian.validate_admin_entity
7983
let resend = Command.Resend.effects |> Guardian.validate_admin_entity
8084
end

pool/web/handler/admin_settings_tags.ml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,11 @@ end = struct
126126
;;
127127

128128
let tag_effects = Guardian.id_effects Tags.Id.of_string Field.Tag
129-
let index = Tags.Guard.Access.index |> Guardian.validate_admin_entity
129+
130+
let index =
131+
Tags.Guard.Access.index |> Guardian.validate_admin_entity ~any_id:true
132+
;;
133+
130134
let create = Command.Create.effects |> Guardian.validate_admin_entity
131135
let read = Tags.Guard.Access.read |> tag_effects |> Guardian.validate_generic
132136

pool/web/view/layout/navigation.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ module NavElements = struct
8585
; single
8686
"/admin/settings/queue"
8787
Queue
88-
(Set Pool_queue.Guard.Access.index)
88+
(Set (Pool_queue.Guard.Access.index ()))
8989
; single
9090
"/admin/settings"
9191
SystemSettings

pool/web/view/layout/navigation_experiment.ml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,10 @@ let nav_elements experiment =
8181
, Field Field.Experimenter
8282
, Set (Experimenter.read ~target_uuid ()) )
8383
] )
84-
; Single (url "messages", MessageHistory, Set Pool_queue.Guard.Access.index)
84+
; Single
85+
( url "messages"
86+
, MessageHistory
87+
, Set (Pool_queue.Guard.Access.index ~id:target_uuid ()) )
8588
]
8689
in
8790
left @ waiting_list_nav @ right |> CCList.map NavElement.create

0 commit comments

Comments
 (0)