diff --git a/Makefile b/Makefile index 5df2961..48f2dd1 100644 --- a/Makefile +++ b/Makefile @@ -44,3 +44,4 @@ run-standalone: clean: rm -rf client/dist/ + rm -rf client/.nuxt/ diff --git a/client/nuxt.config.js b/client/nuxt.config.js index bdd581b..8d9660f 100644 --- a/client/nuxt.config.js +++ b/client/nuxt.config.js @@ -16,6 +16,9 @@ export default { modules: ['@nuxtjs/axios'], plugins: [{ src: '~/plugins/engine.js', mode: 'client' }], axios: { proxy: true }, + publicRuntimeConfig: { + serverBaseUrl: 'http://localhost:3000/', + }, proxy: { '/api/': 'http://localhost:32039', }, diff --git a/client/package.json b/client/package.json index 5e3d54a..b4bc31b 100644 --- a/client/package.json +++ b/client/package.json @@ -10,8 +10,10 @@ }, "dependencies": { "@nuxtjs/axios": "^5.13.6", + "build-url": "^6.0.1", "core-js": "^3.15.1", - "nuxt": "^2.15.7" + "nuxt": "^2.15.7", + "url": "^0.11.0" }, "devDependencies": { "@babel/eslint-parser": "^7.14.7", diff --git a/client/src/components/PlayButton.vue b/client/src/components/PlayButton.vue index ffca440..537e1cf 100644 --- a/client/src/components/PlayButton.vue +++ b/client/src/components/PlayButton.vue @@ -43,6 +43,7 @@ export default { async fetch() { try { this.user = await this.$axios.$get('/api/userinfo') + this.$store.commit('engine/setUser', this.user) } catch(e) { // nop } diff --git a/client/src/pages/play.vue b/client/src/pages/play.vue index 04f327b..060b1ba 100644 --- a/client/src/pages/play.vue +++ b/client/src/pages/play.vue @@ -1,18 +1,22 @@ diff --git a/client/src/plugins/engine.js b/client/src/plugins/engine.js index a829db0..f2aa9bc 100644 --- a/client/src/plugins/engine.js +++ b/client/src/plugins/engine.js @@ -1,15 +1,29 @@ +import buildUrl from 'build-url' + export default (context, inject) => { - const { store, $axios } = context + const { store, $axios, $config } = context const engine = { lastFetched: [0, 0, 0, 0, 0], - start() { + async start() { + if (!store.state.engine.user) { + window.location.href = "/" + } this.fetchUpdate() }, async fetchUpdate() { let delay = 0 try { - const response = await $axios.get('http://localhost:3000/api/sync?v=' + (store.state.engine.version + 1)) + const url = buildUrl($config.serverBaseUrl, { + path: '/api/sync', + queryParams: { + v: store.state.engine.version + 1, + g: store.state.engine.user?.game, + }, + }) + console.log(`url: ${url}`) + + const response = await $axios.get(url) const json = response.data store.commit('engine/setJson', json) } catch (e) { diff --git a/client/src/store/engine.js b/client/src/store/engine.js index 6c85ddb..0d3acb9 100644 --- a/client/src/store/engine.js +++ b/client/src/store/engine.js @@ -1,6 +1,7 @@ export const state = () => ({ json: {}, version: -1, + user: undefined, }) export const mutations = { @@ -11,4 +12,7 @@ export const mutations = { setVersion(state, version) { state.version = version }, + setUser(state, user) { + state.user = user + } } diff --git a/client/yarn.lock b/client/yarn.lock index 5637c57..babcb3b 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -2108,6 +2108,11 @@ buffer@^5.1.0: base64-js "^1.3.1" ieee754 "^1.1.13" +build-url@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/build-url/-/build-url-6.0.1.tgz#b16505136248e24b1b6d7ccab99c7ee73cd962a7" + integrity sha512-FEmyP+3hCVoBBxGZEfC8WCTvqASZb+QOvTznddKCBgdxZFqTww1+7vtZP0TUIL0/8sup0m0QpKaOaj/V4Mol0w== + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" diff --git a/server/src/handler/userinfo.go b/server/src/handler/userinfo.go index 9e26ffc..cfe3ad4 100644 --- a/server/src/handler/userinfo.go +++ b/server/src/handler/userinfo.go @@ -9,6 +9,7 @@ import ( type userLight struct { Name string `json:"name"` Role string `json:"role"` + Game string `json:"game"` } func (authMux *AuthMux) GetUserInfo(w http.ResponseWriter, r *http.Request) { @@ -21,6 +22,7 @@ func (authMux *AuthMux) GetUserInfo(w http.ResponseWriter, r *http.Request) { usrLight := userLight{ Name: usr.Name, Role: usr.Role, + Game: usr.Game, } w.Header().Add("Content-Type", "application/json") diff --git a/server/src/user/struct.go b/server/src/user/struct.go index 6c88c32..ced07dd 100644 --- a/server/src/user/struct.go +++ b/server/src/user/struct.go @@ -10,4 +10,5 @@ type User struct { id string Name string `json:"name"` Role string `json:"role"` + Game string `json:"game"` }