diff --git a/service/filemanager/default.go b/service/filemanager/default.go index f7b984ed..b77c086e 100644 --- a/service/filemanager/default.go +++ b/service/filemanager/default.go @@ -93,6 +93,13 @@ func (m *defaultManager) CreateTemp(pattern string) (*os.File, error) { return file, nil } +func (m *defaultManager) Chown(path string) error { + if m.chown { + return os.Chown(path, m.userID, m.groupID) + } + return nil +} + func (m *defaultManager) Mkdir(path string, perm os.FileMode) error { path = m.BasePath(path) err := os.Mkdir(path, perm) diff --git a/service/filemanager/manager.go b/service/filemanager/manager.go index 6367146e..2de9a6c3 100644 --- a/service/filemanager/manager.go +++ b/service/filemanager/manager.go @@ -12,6 +12,7 @@ type Manager interface { OpenFile(name string, flag int, perm os.FileMode) (*os.File, error) Create(name string) (*os.File, error) CreateTemp(pattern string) (*os.File, error) + Chown(name string) error Mkdir(path string, perm os.FileMode) error MkdirAll(path string, perm os.FileMode) error Remove(path string) error @@ -50,6 +51,14 @@ func CreateTemp(ctx context.Context, pattern string) (*os.File, error) { return manager.CreateTemp(pattern) } +func Chown(ctx context.Context, name string) error { + manager := service.FromContext[Manager](ctx) + if manager == nil { + return nil + } + return manager.Chown(name) +} + func Mkdir(ctx context.Context, path string, perm os.FileMode) error { manager := service.FromContext[Manager](ctx) if manager == nil {