blackbirdchess-client-web/src/routes/account/login/Login.svelte

71 lines
2.5 KiB
Svelte

<div class="flex justify-between">
<a href="/account/login" on:click="{handleGoToServerSelect}">Go Back</a>
</div>
<form name="login-server" class="flex flex-col">
<label class="label my-3">
<span>E-Mail:</span>
<input type="email" name="email" id="login-email" class="input" bind:value={email}>
</label>
<label class="label my-3">
<span>Password:</span>
<input type="password" name="password" id="login-password" class="input" bind:value={password}>
</label>
<button type="button" id="login-server-submit" class="btn variant-filled-primary my-3" on:click={handleLogin}>Submit</button>
<div class="flex justify-between">
{#if globalvars.server.caps.register }
<a href="/account/register">Register</a>
{/if}
{#if globalvars.server.caps.reset }
<a href="/account/reset">Reset your password</a>
{/if}
</div>
</form>
<style lang="scss">
</style>
<script lang="js">
import { urls, alerts, globals } from "$lib/stores.js";
import { createEventDispatcher } from 'svelte';
import {browser} from "$app/environment";
import {requestor} from "../../../serverrequest.js";
import {goto} from "$app/navigation";
var email = '';
var password = '';
let globalvars;
globals.subscribe(value => {
globalvars = value;
});
async function handleLogin() {
try {
let postdata = {email: email, password: password}
let response = await requestor.post(urls.login, JSON.stringify(postdata));
let responsedata = JSON.parse(response.data);
if(response.status != 200) {
let message = 'Something went wrong during login'
if(typeof responsedata.message !== 'undefined') message = responsedata.message
throw(message)
}
if(!responsedata.success) return alerts.update(data => [...data, {text: 'Login failed: ' + responsedata.message , class: 'error'}]);
globals.update((globalobj) => ({ ...globalobj, ...{user: responsedata.user }}));
goto('/')
} catch (error) {
return alerts.update(data => [...data, {text: error, class: 'error'}]);
}
}
function handleGoToServerSelect() {
if(sessionStorage.getItem('serverurl') != undefined) {
if(browser) sessionStorage.removeItem('serverurl');
globals.update((data) => ({ ...data, ...{server: {url: '', caps: {}}} }));
}
}
</script>