@@ -847,20 +847,10 @@ func (fs *Decomposedfs) linkStorageSpaceType(ctx context.Context, spaceType, spa
847
847
848
848
func (fs * Decomposedfs ) StorageSpaceFromNode (ctx context.Context , n * node.Node , checkPermissions bool ) (* provider.StorageSpace , error ) {
849
849
user := ctxpkg .ContextMustGetUser (ctx )
850
- if checkPermissions {
850
+ if checkPermissions && n . SpaceRoot . IsDisabled ( ctx ) {
851
851
rp , err := fs .p .AssemblePermissions (ctx , n )
852
- switch {
853
- case err != nil :
854
- return nil , err
855
- case ! rp .Stat :
856
- return nil , errtypes .NotFound (fmt .Sprintf ("space %s not found" , n .ID ))
857
- }
858
-
859
- if n .SpaceRoot .IsDisabled (ctx ) {
860
- rp , err := fs .p .AssemblePermissions (ctx , n )
861
- if err != nil || ! permissions .IsManager (rp ) {
862
- return nil , errtypes .PermissionDenied (fmt .Sprintf ("user %s is not allowed to list deleted spaces %s" , user .Username , n .ID ))
863
- }
852
+ if err != nil || ! permissions .IsManager (rp ) {
853
+ return nil , errtypes .PermissionDenied (fmt .Sprintf ("user %s is not allowed to list deleted spaces %s" , user .Username , n .ID ))
864
854
}
865
855
}
866
856
@@ -934,7 +924,7 @@ func (fs *Decomposedfs) StorageSpaceFromNode(ctx context.Context, n *node.Node,
934
924
}
935
925
936
926
// publish SpaceMembershipExpired event
937
- if errDeleteGrant == nil && errIndexRemove == nil {
927
+ if errDeleteGrant == nil {
938
928
ev := events.SpaceMembershipExpired {
939
929
SpaceOwner : n .SpaceOwnerOrManager (ctx ),
940
930
SpaceID : & provider.StorageSpaceId {OpaqueId : n .SpaceID },
@@ -961,6 +951,17 @@ func (fs *Decomposedfs) StorageSpaceFromNode(ctx context.Context, n *node.Node,
961
951
grantMap [id ] = g .Permissions
962
952
}
963
953
954
+ // check permissions after expired grants have been removed
955
+ if checkPermissions {
956
+ rp , err := fs .p .AssemblePermissions (ctx , n )
957
+ switch {
958
+ case err != nil :
959
+ return nil , err
960
+ case ! rp .Stat :
961
+ return nil , errtypes .NotFound (fmt .Sprintf ("space %s not found" , n .ID ))
962
+ }
963
+ }
964
+
964
965
grantMapJSON , err := json .Marshal (grantMap )
965
966
if err != nil {
966
967
return nil , err
0 commit comments