testing clientside token stuff

This commit is contained in:
Iris Lightshard 2023-07-05 01:18:46 -06:00
parent f797337074
commit 825f2ac762
Signed by: Iris Lightshard
GPG key ID: 3B7FBC22144E6398
5 changed files with 60 additions and 24 deletions

View file

@ -273,18 +273,19 @@ func apiListImages(next http.Handler, uploads string, uploadType string, udb aut
}
}
}
w.WriteHeader(422)
next.ServeHTTP(w, req)
return
w.WriteHeader(422)
next.ServeHTTP(w, req)
return
}
return http.HandlerFunc(handlerFunc)
}
func apiDeleteImage(next http.Handler, uploads string, uploadType string, udb auth.UserStore, dbAdapter mongodb.DbAdapter) http.Handler {
handlerFunc := func(w http.ResponseWriter, req *http.Request) {
// put the path together
urlParams := req.Context().Value("params").(map[string]string)
urlParams := req.Context().Value("params").(map[string]string)
tableName := urlParams["table"]
tableKey := models.TableKey{
Name: tableName,
@ -307,20 +308,20 @@ func apiDeleteImage(next http.Handler, uploads string, uploadType string, udb au
if ok {
if dbAdapter.CheckTable(tableKey) {
// if the file exists, delete it and return 201
filename := urlParams["file"]
fullPath := filepath.Join(uploads, tableName, uploadType, filename)
s, err := os.Stat(fullPath)
if err == nil && !s.IsDir() {
err = os.Remove(fullPath)
if err == nil {
w.WriteHeader(201)
next.ServeHTTP(w, req)
return
}
}
}
}
// if the file exists, delete it and return 201
filename := urlParams["file"]
fullPath := filepath.Join(uploads, tableName, uploadType, filename)
s, err := os.Stat(fullPath)
if err == nil && !s.IsDir() {
err = os.Remove(fullPath)
if err == nil {
w.WriteHeader(201)
next.ServeHTTP(w, req)
return
}
}
}
}
}
// otherwise, return an error
w.WriteHeader(500)

View file

@ -165,13 +165,14 @@ func (self *GameTableServer) publish(msg []byte) {
}
err = self.writeToDB(&tableMsg)
// sanitize auth for rebroadcast
tableMsg.Auth = nil
clean, err := json.Marshal(tableMsg)
fmt.Println(string(clean[:]))
if err != nil {
fmt.Println(err.Error())
return
}
self.publishLimiter.Wait(context.Background())
for s, k := range self.subscribers {
@ -241,8 +242,6 @@ func (self *GameTableServer) writeToDB(tableMsg *models.TableMessage) error {
}
}
}
tableMsg.Auth = nil
return nil
}

View file

@ -40,8 +40,9 @@ async function getTable(name, pass) {
infoHtml += "<label>Maps couldn't be retrieved</label>";
}
adminZone.innerHTML = infoHtml;
}
else {
// also, we have to fill and toggle the tokens window
} else {
console.log(res.status);
}
} catch (err) {

View file

@ -1,9 +1,11 @@
let map = null;
let mapImg = null;
let tokens = [];
function initializeMap(mapImgUrl) {
if (!map) {
map = L.map('map', { minZoom: 0, maxZoom: 4, crs: L.CRS.Simple });
map.on("zoomend", resizeMarkers);
}
if (mapImg) {
mapImg.removeFrom(map);
@ -13,3 +15,36 @@ function initializeMap(mapImgUrl) {
map.setMaxBounds([[-180,180],[180,-180]]);
map.setView([0,0], 2);
}
// this works but assumes the map is square (reasonable limitation I think)
function resizeMarkers() {
tokens.forEach(t=>{
const icon = t.m.options.icon;
const scaleFactor = mapImg._image.clientWidth / mapImg._image.naturalWidth;
icon.options.iconSize = [scaleFactor * t.sz[0], scaleFactor * t.sz[1]];
t.m.setIcon(icon);
});
}
function addToken(token) {
const self = { sz: token.sz, m: L.marker(token.pos, {
icon: L.icon({
iconUrl: token.img,
iconSize: token.sz,
}),
title: token.name,
draggable: true,
autoPan: true
})};
tokens.push(self);
self.m.addTo(map);
}
// token for testing in browser console
const t = {
img: "https://nilfm.cc/favicon.png",
sz: [32,32],
pos: [0,0],
name: "test",
}

View file

@ -155,7 +155,7 @@ pre {
nav {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-columns: auto 1fr;
}
.leaflet-container {