Merge pull request 'feature/8-login-preserve' (#19) from feature/8-login-preserve into develop
Reviewed-on: #19 close #8
This commit was merged in pull request #19.
	This commit is contained in:
		@@ -6,9 +6,10 @@
 | 
			
		||||
		"build": "snowpack build"
 | 
			
		||||
	},
 | 
			
		||||
	"dependencies": {
 | 
			
		||||
		"@odit/lfk-client-js": "^0.0.5",
 | 
			
		||||
		"@odit/lfk-client-js": "0.0.6",
 | 
			
		||||
		"filepond": "^4.25.1",
 | 
			
		||||
		"gridjs": "^3.2.0",
 | 
			
		||||
		"localforage": "^1.9.0",
 | 
			
		||||
		"svelte-filepond": "^0.0.1",
 | 
			
		||||
		"svelte-i18n": "^3.3.0",
 | 
			
		||||
		"svelte-spa-router": "^3.1.0",
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@
 | 
			
		||||
  import Router from "svelte-spa-router";
 | 
			
		||||
  import { replace } from "svelte-spa-router";
 | 
			
		||||
  import { wrap } from "svelte-spa-router/wrap";
 | 
			
		||||
  import localForage from "localforage";
 | 
			
		||||
  import { addMessages, init, getLocaleFromNavigator } from "svelte-i18n";
 | 
			
		||||
  import en from "./locales/en.json";
 | 
			
		||||
  import de from "./locales/de.json";
 | 
			
		||||
@@ -12,6 +13,12 @@
 | 
			
		||||
    fallbackLocale: "en",
 | 
			
		||||
    initialLocale: getLocaleFromNavigator(),
 | 
			
		||||
  });
 | 
			
		||||
  localForage.config({
 | 
			
		||||
    name: "lfk_admin",
 | 
			
		||||
    version: 1.0,
 | 
			
		||||
    storeName: "lfk_admin",
 | 
			
		||||
    description: "LfK! admin dashbaord",
 | 
			
		||||
  });
 | 
			
		||||
  //
 | 
			
		||||
  import Login from "./components/Login.svelte";
 | 
			
		||||
  import Dashboard from "./components/Dashboard.svelte";
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,7 @@
 | 
			
		||||
  import Tags from "./Tags.svelte";
 | 
			
		||||
  import Badges from "./Badges.svelte";
 | 
			
		||||
  import Avatars from "./Avatars.svelte";
 | 
			
		||||
import store from "../store";
 | 
			
		||||
 | 
			
		||||
  let activePage = "dashboard";
 | 
			
		||||
  let dropdown1 = false;
 | 
			
		||||
@@ -267,7 +268,7 @@
 | 
			
		||||
      <!-- Add content here, remove div below -->
 | 
			
		||||
      <!-- <div class="border-4 border-dashed rounded h-96" /> -->
 | 
			
		||||
      <h1 class="text-3xl leading-tight">
 | 
			
		||||
        <span class="font-bold">Dashboard</span><span> - hello there 👋</span>
 | 
			
		||||
        <span class="font-bold">Dashboard</span><span> - hello there, <span class="text-blue-500">{store.state.jwtinfo.userdetails.firstname}</span> 👋</span>
 | 
			
		||||
      </h1>
 | 
			
		||||
      <div class="shadow px-6 pt-4 pb-1">
 | 
			
		||||
        <BreadcrumbNav />
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
<script>
 | 
			
		||||
  import store from "../store.js";
 | 
			
		||||
  import localForage from "localforage";
 | 
			
		||||
  import { _ } from "svelte-i18n";
 | 
			
		||||
  store.init();
 | 
			
		||||
  import { push, pop, replace } from "svelte-spa-router";
 | 
			
		||||
@@ -7,14 +8,32 @@
 | 
			
		||||
  OpenAPI.BASE = config.baseurl;
 | 
			
		||||
  import Toastify from "toastify-js";
 | 
			
		||||
  import "toastify-js/src/toastify.css";
 | 
			
		||||
  import { init } from "svelte/internal";
 | 
			
		||||
  // ------
 | 
			
		||||
  let usersUsername;
 | 
			
		||||
  let usersPassword = "";
 | 
			
		||||
  let is_blocked_by_autologin = false;
 | 
			
		||||
  let last_loginclick_processed = true;
 | 
			
		||||
 | 
			
		||||
  localForage.getItem("logindata", (err, value) => {
 | 
			
		||||
    if (value) {
 | 
			
		||||
      if (value.access_token && value.refresh_token) {
 | 
			
		||||
        is_blocked_by_autologin = true;
 | 
			
		||||
        OpenAPI.TOKEN = value.access_token;
 | 
			
		||||
        const jwtinfo = JSON.parse(atob(OpenAPI.TOKEN.split(".")[1]));
 | 
			
		||||
        store.login(value.access_token, jwtinfo);
 | 
			
		||||
        replace("/dashboard/");
 | 
			
		||||
        Toastify({
 | 
			
		||||
          text: $_("welcome_wavinghand"),
 | 
			
		||||
          duration: 500,
 | 
			
		||||
          backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)",
 | 
			
		||||
        }).showToast();
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  const login = async () => {
 | 
			
		||||
    // prevent login button spamming
 | 
			
		||||
    if (last_loginclick_processed) {
 | 
			
		||||
    if (last_loginclick_processed && is_blocked_by_autologin === false) {
 | 
			
		||||
      last_loginclick_processed = false;
 | 
			
		||||
      Toastify({
 | 
			
		||||
        text: $_("login_is_checked"),
 | 
			
		||||
@@ -32,9 +51,11 @@
 | 
			
		||||
        username,
 | 
			
		||||
        password,
 | 
			
		||||
      })
 | 
			
		||||
        .then((result) => {
 | 
			
		||||
        .then(async (result) => {
 | 
			
		||||
          await localForage.setItem("logindata", result);
 | 
			
		||||
          OpenAPI.TOKEN = result.access_token;
 | 
			
		||||
          store.login(result.access_token);
 | 
			
		||||
          const jwtinfo = JSON.parse(atob(OpenAPI.TOKEN.split(".")[1]));
 | 
			
		||||
          store.login(result.access_token, jwtinfo);
 | 
			
		||||
          replace("/dashboard/");
 | 
			
		||||
          Toastify({
 | 
			
		||||
            text: $_("welcome_wavinghand"),
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@ import { writable } from 'svelte/store';
 | 
			
		||||
const store = () => {
 | 
			
		||||
	const state = {
 | 
			
		||||
		access_token: undefined,
 | 
			
		||||
		jwtinfo: undefined,
 | 
			
		||||
		isLoggedIn: false
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
@@ -16,10 +17,10 @@ const store = () => {
 | 
			
		||||
				return state;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		login(access_token) {
 | 
			
		||||
		login(access_token, jwtinfo) {
 | 
			
		||||
			update((state) => {
 | 
			
		||||
				state.access_token = access_token;
 | 
			
		||||
				state.jwtinfo = jwtinfo;
 | 
			
		||||
				state.isLoggedIn = true;
 | 
			
		||||
				console.log('login performed');
 | 
			
		||||
				return state;
 | 
			
		||||
@@ -37,6 +38,7 @@ const store = () => {
 | 
			
		||||
		subscribe,
 | 
			
		||||
		set,
 | 
			
		||||
		update,
 | 
			
		||||
		state,
 | 
			
		||||
		...methods
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user