summaryrefslogtreecommitdiffstats
path: root/apps/accounts/src/app/pages/login.svelte
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-06-02 23:02:22 +0200
committerivarlovlie <git@ivarlovlie.no>2022-06-02 23:02:22 +0200
commit83b11393da8f733c0ffc5abed5d1e0e827d04b61 (patch)
tree0b8f1062cc7435576165c7eb1d8745842acc6c32 /apps/accounts/src/app/pages/login.svelte
parent53865dad18012512f90d235f4d2833469dcc1685 (diff)
downloadgreatoffice-83b11393da8f733c0ffc5abed5d1e0e827d04b61.tar.xz
greatoffice-83b11393da8f733c0ffc5abed5d1e0e827d04b61.zip
refactor: Rename accounts to portal
Diffstat (limited to 'apps/accounts/src/app/pages/login.svelte')
-rw-r--r--apps/accounts/src/app/pages/login.svelte145
1 files changed, 0 insertions, 145 deletions
diff --git a/apps/accounts/src/app/pages/login.svelte b/apps/accounts/src/app/pages/login.svelte
deleted file mode 100644
index 3324056..0000000
--- a/apps/accounts/src/app/pages/login.svelte
+++ /dev/null
@@ -1,145 +0,0 @@
-<script>
- import {onMount} from "svelte";
- import {link, querystring} from "svelte-spa-router";
- import {api_base, projects_base, IconNames} from "$shared/lib/configuration";
- import Button from "$shared/components/button.svelte";
- import Alert from "$shared/components/alert.svelte";
- import {login} from "$shared/lib/api/user";
- import {is_email} from "$shared/lib/helpers";
- import Layout from "./_layout.svelte";
-
- const loginForm = {
- loading: false,
- values: {
- username: "",
- password: "",
- },
- alert: {
- title: "",
- type: "",
- message: "",
- isVisible: false,
- show(type, obj) {
- loginForm.alert.title = obj.title;
- loginForm.alert.message = obj.text;
- loginForm.alert.type = type;
- loginForm.alert.isVisible = true;
- loginForm.loading = false;
- },
- hide() {
- loginForm.alert.isVisible = false;
- loginForm.alert.title = "";
- loginForm.alert.message = "";
- loginForm.alert.type = "";
- },
- },
- is_valid() {
- return is_email(loginForm.values.username) && loginForm.values.password.length > 0;
- },
- async submit_form() {
- if (loginForm.loading) {
- return;
- }
- if (loginForm.is_valid()) {
- loginForm.alert.hide();
- loginForm.loading = true;
- try {
- const response = await login(loginForm.values);
- if (response.ok) {
- location.replace(projects_base("#/home"));
- } else {
- if (response.data.title || response.data.text) {
- loginForm.alert.show("error", {
- title: response.data.title ?? "",
- text: response.data.text ?? "",
- });
- } else {
- loginForm.alert.show("error", {
- title: "An unknown error occured",
- text: "Try again soon",
- });
- }
- }
- } catch (e) {
- console.error(e);
- loginForm.alert.show("error", {
- title: "An error occured",
- text: "Could not connect to server, please check your internet connection",
- });
- }
- } else {
- loginForm.alert.show("error", {
- title: "Invalid form",
- });
- }
- },
- };
-
- onMount(() => {
- if ($querystring === "deleted") {
- loginForm.alert.show("info", {
- title: "Account deleted",
- text: "Your account and all its data was successfully deleted.",
- });
- }
- if ($querystring === "expired") {
- loginForm.alert.show("info", {
- title: "Session expired",
- text: "Your session has expired, feel free to log in again.",
- });
- }
- });
-</script>
-
-<Layout>
- <form on:submit|preventDefault={loginForm.submit_form}
- class="margin-bottom-md max-width-xxs">
- <fieldset>
- <legend class="form-legend">
- <span class="margin-bottom-xs">Log into your account</span>
- <br/>
- <span class="text-sm">... or <a href="/signup"
- use:link>create a new one</a></span>
- </legend>
- <div class="margin-bottom-xxs max-width-xxs">
- <Alert visible={loginForm.alert.isVisible}
- title={loginForm.alert.title}
- message={loginForm.alert.message}
- type={loginForm.alert.type}/>
- </div>
- <div class="margin-bottom-xxs">
- <input type="email"
- placeholder="Email address"
- class="form-control width-100%"
- id="username"
- bind:value={loginForm.values.username}/>
- </div>
- <div class="margin-bottom-xxs">
- <input type="password"
- placeholder="Password"
- id="password"
- class="form-control width-100%"
- bind:value={loginForm.values.password}/>
- <div class="flex justify-end">
- <a tabindex="-1"
- class="text-sm"
- href="/forgot"
- use:link>Reset password</a>
- </div>
- </div>
- <div class="flex justify-between">
- <Button text="Login with Github"
- variant="secondary"
- icon="{IconNames.github}"
- icon_right_aligned="true"
- href={api_base("_/account/create-github-session")}
- loading={loginForm.loading}
- />
- <Button text="Login"
- type="submit"
- variant="primary"
- loading={loginForm.loading}/>
- </div>
- </fieldset>
- </form>
-</Layout>