GameTableServer: implement 2-level priveleges for publishing messages, publish map image changes
Iris Lightshard nilix@nilfm.cc
PGP Signature
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEkFh6dA+k/6CXFXU4O3+8IhROY5gFAmRVwYsACgkQO3+8IhRO Y5hisw/+LjZqbsYafGkhJhiy/sX2oXJsqRRkmRuiCo50k4mTsz2KAfGKTYCtUcYc tibfXcorzB/I9990veXgemQOkYHrrJV/RQ+F0SgI1GPp2ZTMyzvWbN5LnL84YV3H bvXgtCaarRS7caC+vIV0jA3TWL+sR43uJRAG1Ptb46z2UDJDhD6aK4he4sXb0oAc VzuznyN8CgFi7VQccLNJFHl46tOgElC1r/IR7yhfai9QDfUI973HakETpV68adZe zdrpjH3Cn3dQB2Kz/7i5DNtD0gmlqSb7Ajtffa+UcJk9LAbGHHt1Yqq5UwziCSoa j8iZbGiSPR079iSrs9srbezueNb/qgLaREQGEim+1bjEcBlPIUYeahavW3ga4hhe gWlGVRdYqjsHNtR3ozSjM939S+c0Dgoax1vGhpW4RoBPVkETM0kltknOhDITZhom qMlOn+mqIRLrMLAzwmTH5MRyJ01SWmOvLT1G4U2ZQafe5xQmENcO84aNTM7rqDL/ TPyZQKKQPgMejPfsE1ktSlREsJ2gbk8s3uxECXeciT5hI6Mbci6ssEzJOS5xWQqW XngPDrp1/2NB+XxUm1Z17znkYKf67TZBuyVujfgNUjDKlPC8MWHTeeI1JBDm15UB UOxJzmNfzxSoea0mkHNUsG6fXwOFNdf8GGCBuQCHk86aPex+zgM= =2902 -----END PGP SIGNATURE-----
1 files changed,
22 insertions(+),
2 deletions(-)
jump to
M
gametable/server.go
→
gametable/server.go
@@ -34,6 +34,7 @@ serveMux http.ServeMux
subscribersLock sync.Mutex subscribers map[*Subscriber]models.TableKey dbAdapter mongodb.DbAdapter + udb auth.UserStore } func New(adapter mongodb.DbAdapter, udb auth.UserStore, uploads string, uploadMaxMB int) *GameTableServer {@@ -43,6 +44,7 @@ logf: log.Printf,
subscribers: make(map[*Subscriber]models.TableKey), publishLimiter: rate.NewLimiter(rate.Every(time.Millisecond*100), 8), dbAdapter: adapter, + udb: udb, } srvr.serveMux.Handle("/table/", http.StripPrefix("/table/", renderer.Subtree("./static"))) srvr.serveMux.Handle("/uploads/", http.StripPrefix("/uploads/", renderer.Subtree(uploads)))@@ -162,8 +164,12 @@ fmt.Println(err.Error())
return } - self.writeToDB(tableMsg) + err = self.writeToDB(tableMsg) + if err != nil { + fmt.Println(err.Error()) + return + } self.publishLimiter.Wait(context.Background()) for s, k := range self.subscribers {@@ -175,6 +181,7 @@ go s.closeSlow()
} } } + } func (self *GameTableServer) getCurrentState(tableKey models.TableKey) []byte {@@ -210,7 +217,20 @@ key := *tableMsg.Key
if tableMsg.DiceRoll != nil { err := self.dbAdapter.InsertDiceRoll(key, *tableMsg.DiceRoll) if err != nil { - fmt.Println(err.Error()) + return err + } + } + + // map image change and token addition/removal require admin authorization + if tableMsg.Auth != nil { + authorized, _ := self.udb.ValidateToken(*tableMsg.Auth) + if authorized { + if tableMsg.MapImg != nil { + err := self.dbAdapter.SetMapImageUrl(key, *tableMsg.MapImg) + if err != nil { + return err + } + } } } return nil