diff --git a/pkg/filemanager/fs/dbfs/my_navigator.go b/pkg/filemanager/fs/dbfs/my_navigator.go index 8b13d96..e12ac56 100644 --- a/pkg/filemanager/fs/dbfs/my_navigator.go +++ b/pkg/filemanager/fs/dbfs/my_navigator.go @@ -3,7 +3,9 @@ package dbfs import ( "context" "fmt" + "github.com/cloudreve/Cloudreve/v4/ent" + "github.com/cloudreve/Cloudreve/v4/ent/user" "github.com/cloudreve/Cloudreve/v4/inventory" "github.com/cloudreve/Cloudreve/v4/pkg/boolset" "github.com/cloudreve/Cloudreve/v4/pkg/cache" @@ -83,11 +85,16 @@ func (n *myNavigator) To(ctx context.Context, path *fs.URI) (*File, error) { return nil, ErrPermissionDenied } - targetUser, err := n.userClient.GetLoginUserByID(ctx, fsUid) + ctx = context.WithValue(ctx, inventory.LoadUserGroup{}, true) + targetUser, err := n.userClient.GetByID(ctx, fsUid) if err != nil { return nil, fs.ErrPathNotExist.WithError(fmt.Errorf("user not found: %w", err)) } + if targetUser.Status != user.StatusActive && !n.user.Edges.Group.Permissions.Enabled(int(types.GroupPermissionIsAdmin)) { + return nil, fs.ErrPathNotExist.WithError(fmt.Errorf("inactive user")) + } + rootFile, err := n.fileClient.Root(ctx, targetUser) if err != nil { n.l.Info("User's root folder not found: %s, will initialize it.", err)