1010import org .lowcoder .api .application .view .ApplicationPublishRequest ;
1111import org .lowcoder .api .application .view .ApplicationView ;
1212import org .lowcoder .api .home .SessionUserService ;
13+ import org .lowcoder .api .permission .view .CommonPermissionView ;
1314import org .lowcoder .api .usermanagement .view .AddMemberRequest ;
1415import org .lowcoder .api .usermanagement .view .UpdateRoleRequest ;
1516import org .lowcoder .domain .application .model .Application ;
@@ -710,34 +711,16 @@ public Mono<Void> publishDatasourceEvent(Datasource datasource, EventType eventT
710711 });
711712 }
712713
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-
732714 public Mono <Void > publishDatasourcePermissionEvent (String datasourceId ,
733715 Collection <String > userIds , Collection <String > groupIds , String role ,
734- EventType eventType ) {
716+ EventType eventType , CommonPermissionView oldPermissions , CommonPermissionView newPermissions ) {
735717 return Mono .zip (sessionUserService .getVisitorOrgMemberCache (),
736718 datasourceService .getById (datasourceId ),
737719 sessionUserService .getVisitorToken ())
738720 .flatMap (tuple -> {
739721 OrgMember orgMember = tuple .getT1 ();
740722 Datasource datasource = tuple .getT2 ();
723+
741724 DatasourcePermissionEvent datasourcePermissionEvent = DatasourcePermissionEvent .builder ()
742725 .datasourceId (datasourceId )
743726 .name (datasource .getName ())
@@ -746,6 +729,8 @@ public Mono<Void> publishDatasourcePermissionEvent(String datasourceId,
746729 .orgId (orgMember .getOrgId ())
747730 .userIds (userIds )
748731 .groupIds (groupIds )
732+ .newPermissions (newPermissions ==null ?null :newPermissions .getPermissions ())
733+ .oldPermissions (oldPermissions ==null ?null :oldPermissions .getPermissions ())
749734 .role (role )
750735 .eventType (eventType )
751736 .isAnonymous (Authentication .isAnonymousUser (orgMember .getUserId ()))
@@ -763,6 +748,37 @@ public Mono<Void> publishDatasourcePermissionEvent(String datasourceId,
763748 });
764749 }
765750
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+
766782 public Mono <Void > publishLibraryQueryPublishEvent (String id , String oldVersion , String newVersion , EventType eventType ) {
767783 return sessionUserService .getVisitorOrgMemberCache ()
768784 .zipWith (sessionUserService .getVisitorToken ())
0 commit comments