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"`
}