Login from game

This commit is contained in:
KGrzeg 2021-10-17 22:35:50 +02:00
parent 33b47dcb67
commit edd632fd76
3 changed files with 41 additions and 20 deletions

View file

@ -3,13 +3,19 @@ const baseApiPath = "http://localhost:3000"
export default {
async post(path: string, data: any) {
const headers = {
'Content-Type': 'application/json'
}
if (window.myStuff.token) {
headers['Authorization'] = `Bearer ${window.myStuff.token}`
}
let response;
try {
response = await fetch(`${baseApiPath}/${path}`, {
method: "POST",
headers: {
'Content-Type': 'application/json'
},
headers,
body: JSON.stringify(data)
})
} catch (err) {
@ -21,5 +27,9 @@ export default {
async signup(name: string) {
return this.post("signup", { name })
},
async login(password: string) {
return this.post("login", { password })
}
}

View file

@ -5,7 +5,8 @@ declare global {
myStuff: {
name?: String | null,
token?: String | null,
password?: String | null,
key?: String | null,
record?: String | null,
}
}
}
@ -25,18 +26,28 @@ declare global {
key: document.getElementById("key"),
}
function readDataFromToken(token) {
return JSON.parse(
atob(token.split('.')[1])
)
}
function checkIfLogged() {
const token = localStorage.getItem("token")
const name = localStorage.getItem("name")
const key = localStorage.getItem("key")
if (token !== null) {
const data = readDataFromToken(token)
window.myStuff.token = token
window.myStuff.name = name
console.log("my stuff", window.myStuff)
window.myStuff.name = data.name
window.myStuff.record = data.record
window.myStuff.key = key
elements.bar.logged!.style.display = ""
elements.bar.loggedout!.style.display = "none"
elements.name!.innerText = name!;
elements.key!.innerText = token!;
elements.name!.innerText = data.name!;
elements.key!.innerText = key!;
} else {
console.log("not logged in")
elements.bar.logged!.style.display = "none"
@ -44,7 +55,7 @@ declare global {
}
}
function loginByKey() {
async function login() {
const key = prompt("Type in the #key")
if (!key) {
@ -52,22 +63,20 @@ declare global {
return
}
//TODO: fetch data from server
const response = {
token: Math.random().toString() + '.abc',
name: 'Hagis'
}
const response = await API.login(key)
localStorage.setItem('token', response.token)
localStorage.setItem('name', response.name)
localStorage.setItem('key', response.password)
window.myStuff.token = response.token
window.myStuff.name = response.name
window.myStuff.record = response.record
window.myStuff.key = response.password
elements.bar.logged!.style.display = ''
elements.bar.loggedout!.style.display = 'none'
elements.name!.innerText = response.name
elements.key!.innerText = response.token
elements.key!.innerText = response.password
}
async function signup() {
@ -81,10 +90,12 @@ declare global {
const response = await API.signup(nickname)
localStorage.setItem('token', response.token)
localStorage.setItem('key', response.password)
window.myStuff.token = response.token
window.myStuff.name = response.name
window.myStuff.password = response.password
window.myStuff.key = response.password
window.myStuff.record = response.record
elements.bar.logged!.style.display = ''
elements.bar.loggedout!.style.display = 'none'
@ -112,7 +123,7 @@ declare global {
function setup() {
window.myStuff = {}
elements.buttons.login!.addEventListener("click", loginByKey)
elements.buttons.login!.addEventListener("click", login)
elements.buttons.logout!.addEventListener("click", logout)
elements.buttons.signup!.addEventListener("click", signup)

View file

@ -9,7 +9,7 @@
<div class="bar">
<div id="loggedbar" class="logged-in" style="display: none">
Logged in as <span id="name">username</span>
<span id="key" class="key">#asdasdasdasd</span>
key (#<span id="key" class="key">#asdasdasdasd</span>)
<button id="logout">Log out</button>
</div>
<div id="loggedoutbar" class="logged-out" style="display: none">