diff options
| author | jan <jan@ruken.pw> | 2016-10-10 13:00:53 (UTC) |
|---|---|---|
| committer | jan <jan@ruken.pw> | 2016-10-10 13:00:53 (UTC) |
| commit | 9d4ebd033d5f0d6ad6d1d6f52fd16e0bdc17a49e (patch) | |
| tree | d47debc0d888b23e35cbf7f0628cc5ca3dea5eb7 | |
| parent | 985930bd454a9732e31f460821be43d036afe411 (diff) | |
list: listen loeschen
| -rw-r--r-- | modules/lists/lists.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/modules/lists/lists.go b/modules/lists/lists.go index 9e78ac7..6129502 100644 --- a/modules/lists/lists.go +++ b/modules/lists/lists.go | |||
| @@ -79,6 +79,7 @@ func (m *Module) Init(g *grilist.Grilist) { | |||
| 79 | m.g.Router.POST("/list/:id/settings", m.updateListSettings) | 79 | m.g.Router.POST("/list/:id/settings", m.updateListSettings) |
| 80 | m.g.Router.GET("/new/list", m.displayCreateList) | 80 | m.g.Router.GET("/new/list", m.displayCreateList) |
| 81 | m.g.Router.POST("/new/list", m.createList) | 81 | m.g.Router.POST("/new/list", m.createList) |
| 82 | m.g.Router.GET("/list/:id/delete", m.deleteList) | ||
| 82 | 83 | ||
| 83 | m.g.Router.GET("/api/lists/user", m.APIgetUserLists) | 84 | m.g.Router.GET("/api/lists/user", m.APIgetUserLists) |
| 84 | 85 | ||
| @@ -287,6 +288,54 @@ func (m *Module) viewList(w http.ResponseWriter, r *http.Request, p httprouter.P | |||
| 287 | m.g.Renderer.RenderPage("list", w, data) | 288 | m.g.Renderer.RenderPage("list", w, data) |
| 288 | } | 289 | } |
| 289 | 290 | ||
| 291 | func (m *Module) deleteList(w http.ResponseWriter, r *http.Request, p httprouter.Params) { | ||
| 292 | user, err := m.g.Charakterin.GetUserFromRequest(r) | ||
| 293 | if err != nil { | ||
| 294 | log.Println("invalid deleteList user") | ||
| 295 | http.Redirect(w, r, fmt.Sprintf("/list/%s", p.ByName("id")), 403) | ||
| 296 | return | ||
| 297 | } | ||
| 298 | |||
| 299 | id, err := strconv.Atoi(p.ByName("id")) | ||
| 300 | if err != nil { | ||
| 301 | log.Println("invalid deleteList ID") | ||
| 302 | http.Redirect(w, r, "/", 400) | ||
| 303 | return | ||
| 304 | } | ||
| 305 | |||
| 306 | list, err := m.FromID(id, false) | ||
| 307 | if err != nil { | ||
| 308 | log.Println("invalid deleteList ID (could not get list)") | ||
| 309 | http.Redirect(w, r, fmt.Sprintf("/list/%d", id), 500) | ||
| 310 | return | ||
| 311 | } | ||
| 312 | |||
| 313 | // checken, ob der user auch list owner ist | ||
| 314 | if user.ID != list.Owner.ID { | ||
| 315 | log.Println("invalid deleteList request: user not list owner") | ||
| 316 | http.Redirect(w, r, fmt.Sprintf("/list/%d", id), 403) | ||
| 317 | return | ||
| 318 | } | ||
| 319 | |||
| 320 | // aus der Datenbank loeschen | ||
| 321 | _, err = m.g.DB.Query(`DELETE FROM grilist.lists WHERE id = $1`, id) | ||
| 322 | if err != nil { | ||
| 323 | log.Println("could not delete list:", err) | ||
| 324 | data := m.g.Renderer.DefaultData() | ||
| 325 | data["user"] = user | ||
| 326 | data["list"] = list | ||
| 327 | data["error"] = "Liste konnte nicht geloescht werden." | ||
| 328 | |||
| 329 | m.g.Renderer.RenderPage("list_settings", w, data) | ||
| 330 | return | ||
| 331 | } | ||
| 332 | // aus dem Cache loeschen | ||
| 333 | m.c.Remove(list.ID) | ||
| 334 | |||
| 335 | log.Printf("list %d has been deleted by the owner %d(%s)", list.ID, list.Owner.ID, list.Owner.GetName()) | ||
| 336 | http.Redirect(w, r, "/", 302) | ||
| 337 | } | ||
| 338 | |||
| 290 | func (m *Module) viewListSettings(w http.ResponseWriter, r *http.Request, p httprouter.Params) { | 339 | func (m *Module) viewListSettings(w http.ResponseWriter, r *http.Request, p httprouter.Params) { |
| 291 | user, err := m.g.Charakterin.GetUserFromRequest(r) | 340 | user, err := m.g.Charakterin.GetUserFromRequest(r) |
| 292 | if err != nil { | 341 | if err != nil { |
