all repos — felt @ 7f18668f44cae07c9bc3b2bdc77e8267217a2a5e

virtual tabletop for dungeons and dragons (and similar) using Go, MongoDB, and websockets

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-----
commit

7f18668f44cae07c9bc3b2bdc77e8267217a2a5e

parent

75eb4762329eaae6d9dbb27f60e7c5934c8eb8ea

1 files changed, 39 insertions(+), 1 deletions(-)

jump to
M admin/admin.goadmin/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) }