10
10
import org .lowcoder .api .application .view .ApplicationPublishRequest ;
11
11
import org .lowcoder .api .application .view .ApplicationView ;
12
12
import org .lowcoder .api .home .SessionUserService ;
13
+ import org .lowcoder .api .permission .view .CommonPermissionView ;
13
14
import org .lowcoder .api .usermanagement .view .AddMemberRequest ;
14
15
import org .lowcoder .api .usermanagement .view .UpdateRoleRequest ;
15
16
import org .lowcoder .domain .application .model .Application ;
@@ -710,34 +711,16 @@ public Mono<Void> publishDatasourceEvent(Datasource datasource, EventType eventT
710
711
});
711
712
}
712
713
713
- public Mono <Void > publishDatasourcePermissionEvent (String permissionId , EventType eventType ) {
714
- return resourcePermissionService .getById (permissionId )
715
- .zipWhen (resourcePermission -> datasourceService .getById (resourcePermission .getResourceId ()))
716
- .flatMap (tuple -> {
717
- ResourcePermission resourcePermission = tuple .getT1 ();
718
- ResourceHolder holder = resourcePermission .getResourceHolder ();
719
- Datasource datasource = tuple .getT2 ();
720
- return publishDatasourcePermissionEvent (datasource .getId (),
721
- holder == USER ? List .of (resourcePermission .getResourceHolderId ()) : Collections .emptyList (),
722
- holder == USER ? Collections .emptyList () : List .of (resourcePermission .getResourceHolderId ()),
723
- resourcePermission .getResourceRole ().getValue (),
724
- eventType );
725
- })
726
- .onErrorResume (throwable -> {
727
- log .error ("publishDatasourcePermissionEvent error." , throwable );
728
- return Mono .empty ();
729
- });
730
- }
731
-
732
714
public Mono <Void > publishDatasourcePermissionEvent (String datasourceId ,
733
715
Collection <String > userIds , Collection <String > groupIds , String role ,
734
- EventType eventType ) {
716
+ EventType eventType , CommonPermissionView oldPermissions , CommonPermissionView newPermissions ) {
735
717
return Mono .zip (sessionUserService .getVisitorOrgMemberCache (),
736
718
datasourceService .getById (datasourceId ),
737
719
sessionUserService .getVisitorToken ())
738
720
.flatMap (tuple -> {
739
721
OrgMember orgMember = tuple .getT1 ();
740
722
Datasource datasource = tuple .getT2 ();
723
+
741
724
DatasourcePermissionEvent datasourcePermissionEvent = DatasourcePermissionEvent .builder ()
742
725
.datasourceId (datasourceId )
743
726
.name (datasource .getName ())
@@ -746,6 +729,8 @@ public Mono<Void> publishDatasourcePermissionEvent(String datasourceId,
746
729
.orgId (orgMember .getOrgId ())
747
730
.userIds (userIds )
748
731
.groupIds (groupIds )
732
+ .newPermissions (newPermissions ==null ?null :newPermissions .getPermissions ())
733
+ .oldPermissions (oldPermissions ==null ?null :oldPermissions .getPermissions ())
749
734
.role (role )
750
735
.eventType (eventType )
751
736
.isAnonymous (Authentication .isAnonymousUser (orgMember .getUserId ()))
@@ -763,6 +748,37 @@ public Mono<Void> publishDatasourcePermissionEvent(String datasourceId,
763
748
});
764
749
}
765
750
751
+ public Mono <Void > publishDatasourceResourcePermissionEvent (EventType eventType , ResourcePermission oldPermission , ResourcePermission newPermission ) {
752
+ return Mono .zip (sessionUserService .getVisitorOrgMemberCache (),
753
+ datasourceService .getById (oldPermission .getResourceId ()),
754
+ sessionUserService .getVisitorToken ())
755
+ .flatMap (tuple -> {
756
+ OrgMember orgMember = tuple .getT1 ();
757
+ Datasource datasource = tuple .getT2 ();
758
+
759
+ DatasourceResourcePermissionEvent datasourceResourcePermissionEvent = DatasourceResourcePermissionEvent .builder ()
760
+ .name (datasource .getName ())
761
+ .type (datasource .getType ())
762
+ .userId (orgMember .getUserId ())
763
+ .orgId (orgMember .getOrgId ())
764
+ .newPermission (newPermission )
765
+ .oldPermission (oldPermission )
766
+ .eventType (eventType )
767
+ .isAnonymous (Authentication .isAnonymousUser (orgMember .getUserId ()))
768
+ .sessionHash (Hashing .sha512 ().hashString (tuple .getT3 (), StandardCharsets .UTF_8 ).toString ())
769
+ .build ();
770
+ return Mono .deferContextual (contextView -> {
771
+ datasourceResourcePermissionEvent .populateDetails (contextView );
772
+ applicationEventPublisher .publishEvent (datasourceResourcePermissionEvent );
773
+ return Mono .<Void >empty ();
774
+ });
775
+ })
776
+ .onErrorResume (throwable -> {
777
+ log .error ("DatasourceResourcePermissionEvent error." , throwable );
778
+ return Mono .empty ();
779
+ });
780
+ }
781
+
766
782
public Mono <Void > publishLibraryQueryPublishEvent (String id , String oldVersion , String newVersion , EventType eventType ) {
767
783
return sessionUserService .getVisitorOrgMemberCache ()
768
784
.zipWith (sessionUserService .getVisitorToken ())
0 commit comments