@@ -731,10 +731,22 @@ impl Storelike for Db {
731731
732732 let mut transaction = Transaction :: new ( ) ;
733733
734+ let mut root_subject: Option < String > = None ;
735+
734736 // BEFORE APPLY COMMIT HANDLERS
735737 if let Some ( resource_new) = & commit_response. resource_new {
736738 for extender in self . class_extenders . iter ( ) {
737739 if extender. resource_has_extender ( resource_new) ? {
740+ let ( is_in_scope, cached_root) = extender
741+ . check_scope ( & resource_new, self , root_subject)
742+ . await ?;
743+
744+ root_subject = cached_root;
745+
746+ if !is_in_scope {
747+ continue ;
748+ }
749+
738750 let Some ( handler) = extender. before_commit . as_ref ( ) else {
739751 continue ;
740752 } ;
@@ -799,6 +811,16 @@ impl Storelike for Db {
799811 if let Some ( resource_new) = & commit_response. resource_new {
800812 for extender in self . class_extenders . iter ( ) {
801813 if extender. resource_has_extender ( resource_new) ? {
814+ let ( is_in_scope, cached_root) = extender
815+ . check_scope ( & resource_new, self , root_subject)
816+ . await ?;
817+
818+ root_subject = cached_root;
819+
820+ if !is_in_scope {
821+ continue ;
822+ }
823+
802824 use crate :: class_extender:: CommitExtenderContext ;
803825
804826 let Some ( handler) = extender. after_commit . as_ref ( ) else {
@@ -886,9 +908,20 @@ impl Storelike for Db {
886908
887909 let _explanation = crate :: hierarchy:: check_read ( self , & resource, for_agent) . await ?;
888910
911+ let mut root_subject: Option < String > = None ;
912+
889913 // If a certain class needs to be extended, add it to this match statement
890914 for extender in self . class_extenders . iter ( ) {
891915 if extender. resource_has_extender ( & resource) ? {
916+ let ( is_in_scope, cached_root) =
917+ extender. check_scope ( & resource, self , root_subject) . await ?;
918+
919+ root_subject = cached_root;
920+
921+ if !is_in_scope {
922+ continue ;
923+ }
924+
892925 if skip_dynamic {
893926 // This lets clients know that the resource may have dynamic properties that are currently not included
894927 resource
0 commit comments