admin: implement apiDestroyTable
Iris Lightshard nilix@nilfm.cc
PGP Signature
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEkFh6dA+k/6CXFXU4O3+8IhROY5gFAmO2WeIACgkQO3+8IhRO Y5i81g//VS98JJNo12/vpXsFyXR60LQGpZL0hD0H1Mfwvot31vdTSf5vMOXrC7Ya NJRfky43mr46UeDdAHTA0GEEAnXwtSmfPGZQPPvi2SUtPCLUvjJ4VAhbjNu3e5pf TOj+6TYkXiRC6bHo5cDt7Xh2iDLeH/zt55dkKK9mn7LXXEQGmSXwH9DSl0Lmj5Yh 1/+kyzxstS8UVfu7E3cyMIrEpButYPengl1ygJi0a9JXMhUGSXPhEBbaVBeCDi4a OKRkOY3CBWuY8wTCvIuzMhEWq3DzY5u+jMYKaQghcw4fi2RN+6cbkvqtj5mX3u8v df8WJrCoWVeetdoe84uU3EsN7p8sXvo+phG4e6YKLRsWXKHyHv60MZQP9PVTGhgz 8Zhm+jjPkK9LfkP+AFkyH3NDo6C31vvDhBHgWCgml3gDBH8RX2IuhLnibLJpQQNE z3cTPe1HwQsWTQOxlRruKCJJoLf0pS59yKzt1d9AyZbCBMXEl1eJJBKz4D5goFNb Mhq2goOUVxIA1Vih5xPrsNihmAipoGabKdfympmgvE1IgxDhVMmgCYS5vbFaB4sb is3ngPFvJXyjLtGpTJtRhJQvb1qXeDMvq0ma/pwtSRuHkCeRPqAl3O/p/xyc4kil tfh1qdc5ntS8e90TS2weBcex8FiNCQpSrQ1c3Hj82Vesd/KOURc= =Ji6Q -----END PGP SIGNATURE-----
1 files changed,
39 insertions(+),
1 deletions(-)
jump to
M
admin/admin.go
→
admin/admin.go
@@ -100,7 +100,44 @@
func apiDestroyTable(next http.Handler, udb auth.UserStore, dbAdapter mongodb.DbAdapter) http.Handler { handlerFunc := func(w http.ResponseWriter, req *http.Request) { // check table actually belongs to this user - // if it does, try to destroy it + user := util.GetUserFromToken(req) + tables, err := util.GetTablesByUser(user, udb) + + if err == nil { + + destroy := false + i := 0 + + tableName := req.Context().Value("Slug") + tablePass := req.Form["passcode"][0] + + table := models.TableKey{ + Name: tableName.(string), + Passcode: tablePass, + } + + for j, t := range tables { + if t.Name == table.Name && t.Passcode == table.Passcode { + + // try to destroy it + destroy = dbAdapter.DestroyTable(table) == nil + i = j + break + } + } + + if destroy { + newTables := append(tables[:i], tables[i+1:]...) + util.SetTablesForUser(user, newTables, udb) + w.WriteHeader(204) + } else { + w.WriteHeader(404) + } + + } else { + w.WriteHeader(500) + } + next.ServeHTTP(w, req) } return http.HandlerFunc(handlerFunc)@@ -116,6 +153,7 @@ rtr.Post("/api/auth/", Provision(udb, 84))
rtr.Get("/api/table/", Validate(apiGetTableList(renderer.JSON("tableList"), udb), udb, scopes)) rtr.Get(`/api/table/(?P<Slug>\S+)`, Validate(apiGetTableData(renderer.JSON("tableData"), udb, dbAdapter), udb, scopes)) rtr.Post("/api/table/", Validate(apiCreateTable(renderer.JSON("result"), udb, dbAdapter), udb, scopes)) + rtr.Delete(`/api/table/(?P<Slug>\S+)`, Validate(apiDestroyTable(renderer.JSON("result"), udb, dbAdapter), udb, scopes)) return http.HandlerFunc(rtr.ServeHTTP) }