aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2020-05-13 17:59:04 +0200
committerSimon Ser <contact@emersion.fr>2020-05-13 17:59:04 +0200
commit37be46c047f03cadb5c8a53ff803d46c62fdd2f4 (patch)
treeff71ae4bc1a7c873fd40aaabe8a992be868d1158
parent297798dca260ae3cd8ca937d4ad6b17e120c54fa (diff)
downloadalps-37be46c047f03cadb5c8a53ff803d46c62fdd2f4.tar.gz
alps-37be46c047f03cadb5c8a53ff803d46c62fdd2f4.zip
plugins/carddav: add route to delete a contact
-rw-r--r--plugins/carddav/public/address-object.html3
-rw-r--r--plugins/carddav/routes.go18
2 files changed, 21 insertions, 0 deletions
diff --git a/plugins/carddav/public/address-object.html b/plugins/carddav/public/address-object.html
index 5423d9f..2b37768 100644
--- a/plugins/carddav/public/address-object.html
+++ b/plugins/carddav/public/address-object.html
@@ -14,6 +14,9 @@
<a href="{{.AddressObject.URL}}/edit">
Edit
</a>
+ <form action="{{.AddressObject.URL}}/delete" method="post">
+ <input type="submit" value="Delete">
+ </form>
</p>
<ul>
diff --git a/plugins/carddav/routes.go b/plugins/carddav/routes.go
index 78fe1eb..7660dbc 100644
--- a/plugins/carddav/routes.go
+++ b/plugins/carddav/routes.go
@@ -211,4 +211,22 @@ func registerRoutes(p *plugin) {
p.GET("/contacts/:path/edit", updateContact)
p.POST("/contacts/:path/edit", updateContact)
+
+ p.POST("/contacts/:path/delete", func(ctx *alps.Context) error {
+ path, err := parseObjectPath(ctx.Param("path"))
+ if err != nil {
+ return err
+ }
+
+ c, err := p.client(ctx.Session)
+ if err != nil {
+ return err
+ }
+
+ if err := c.RemoveAll(path); err != nil {
+ return fmt.Errorf("failed to delete address object: %v", err)
+ }
+
+ return ctx.Redirect(http.StatusFound, "/contacts")
+ })
}