diff --git a/cmd_share.go b/cmd_share.go
index f12a897..da2d45f 100644
--- a/cmd_share.go
+++ b/cmd_share.go
@@ -92,14 +92,14 @@ func (cmd *CmdShareCreate) Run(app *app) error {
// Best effort cleanup.
_ = app.shareStore.RemoveShare(share.UUID)
- return fmt.Errorf("cannot set share attributes: %v", err)
+ return fmt.Errorf("cannot set share attributes: %w", err)
}
if err := os.MkdirAll(path.Join(app.DataDirectory, share.UUID.String()), 0750); err != nil {
// Best effort cleanup.
_ = app.shareStore.RemoveShare(share.UUID)
- return fmt.Errorf("cannot create data dir: %v", err)
+ return fmt.Errorf("cannot create data dir: %w", err)
}
fmt.Printf("Share created: %s\n", share.UUID.String())
@@ -116,11 +116,11 @@ type CmdShareDelete struct {
func (cmd *CmdShareDelete) Run(app *app) error {
if err := os.RemoveAll(path.Join(app.DataDirectory, cmd.UUID.String())); err != nil {
- return fmt.Errorf("cannot remove data directory: %v", err)
+ return fmt.Errorf("cannot remove data directory: %w", err)
}
if err := app.shareStore.RemoveShare(cmd.UUID); err != nil {
- return fmt.Errorf("cannot remove share: %v", err)
+ return fmt.Errorf("cannot remove share: %w", err)
}
return nil
diff --git a/templates/my-shares.html b/templates/my-shares.html
index af8e8c6..1f7416e 100644
--- a/templates/my-shares.html
+++ b/templates/my-shares.html
@@ -28,6 +28,7 @@
UUID: {{ $share.UUID }} {{ if $share.IsAdmin }}
{{ end }}
diff --git a/webadmin.go b/webadmin.go
index f41997e..657b3a6 100644
--- a/webadmin.go
+++ b/webadmin.go
@@ -509,6 +509,15 @@ Are you sure you want to continue?`, loginName)
return
}
+ if err := os.MkdirAll(path.Join(app.DataDirectory, share.UUID.String()), 0750); err != nil {
+ // Best effort cleanup.
+ _ = app.shareStore.RemoveShare(share.UUID)
+
+ fmt.Fprintf(os.Stderr, "cannot create data dir: %v\n", err)
+ sessionContext.RenderError(template.HTML("Internal server error."), "")
+ return
+ }
+
if owned {
if err := app.shareStore.AddUserToShare(share, sessionContext.user.Username, ShareRoleAdmin); err != nil {
sessionContext.RenderError(template.HTML("Cannot add self to share: "+err.Error()), "")
@@ -523,9 +532,11 @@ Are you sure you want to continue?`, loginName)
ar.Post("/delete-share", func(w http.ResponseWriter, r *http.Request) {
sessionContext := h.buildSessionContext(w, r)
+ returnURL := r.FormValue("source")
+
share, err := app.shareStore.GetShare(r.FormValue("share"))
if err != nil {
- sessionContext.RenderError(template.HTML("Internal error: "+err.Error()), "")
+ sessionContext.RenderError(template.HTML("Internal error: "+err.Error()), returnURL)
return
}
@@ -541,12 +552,18 @@ Are you sure you want to continue?`, share.UUID, share.Name)
// We have already rendered. Nothing to do.
return
} else if confirmStatus == confirmAccepted {
+ if err := os.RemoveAll(path.Join(app.DataDirectory, share.UUID.String())); err != nil {
+ fmt.Fprintf(os.Stderr, "cannot remove data dir: %v\n", err)
+ sessionContext.RenderError(template.HTML("Internal server error."), returnURL)
+ return
+ }
+
if err := app.shareStore.RemoveShare(share.UUID); err != nil {
- sessionContext.RenderError(template.HTML("Share cannot be removed: "+err.Error()), "shares")
+ sessionContext.RenderError(template.HTML("Share cannot be removed: "+err.Error()), returnURL)
return
}
}
- sessionContext.Redirect("shares")
+ sessionContext.Redirect(returnURL)
})
ar.Route("/create-user", func(r chi.Router) {
r.Get("/", func(w http.ResponseWriter, r *http.Request) {