add: Abstract class to simplifie the code,

AbstractRedirectView,
AbstractAuthentificateView
AbstractUnAuthentificateView
This commit is contained in:
starnakin 2023-11-29 19:55:44 +01:00
parent a6666b889f
commit 84a5a592ca
8 changed files with 67 additions and 28 deletions

View File

@ -9,6 +9,8 @@ import RegisterView from "./views/accounts/RegisterView.js";
import LogoutView from "./views/accounts/LogoutView.js"; import LogoutView from "./views/accounts/LogoutView.js";
import { Client } from "./api/client.js"; import { Client } from "./api/client.js";
import AbstractProtectedView from "./views/AbstractRedirectView.js";
import AbstractRedirectView from "./views/AbstractRedirectView.js";
let client = new Client(location.protocol + "//" + location.host) let client = new Client(location.protocol + "//" + location.host)
@ -64,6 +66,10 @@ const router = async (uri = "") => {
await lastView.leavePage(); await lastView.leavePage();
const view = new match.route.view(getParams(match)); const view = new match.route.view(getParams(match));
if (view instanceof AbstractRedirectView && await view.redirect())
return 1;
lastView = view; lastView = view;
let content = await view.getHtml(); let content = await view.getHtml();

View File

@ -0,0 +1,18 @@
import { client, navigateTo } from "../index.js";
import AbstractRedirectView from "./AbstractRedirectView.js";
export default class extends AbstractRedirectView{
constructor(params) {
super(params, "/login");
}
async redirect()
{
if (await client.isAuthentificate() === false)
{
navigateTo(this.redirect_url);
return 1;
}
return 0;
}
}

View File

@ -0,0 +1,15 @@
import { navigateTo } from "../index.js";
import AbstractView from "./AbstractView.js";
export default class extends AbstractView{
constructor(params, url)
{
super(params);
this.redirect_url = url;
}
async redirect()
{
navigateTo(url);
}
}

View File

@ -0,0 +1,16 @@
import { client, navigateTo } from "../index.js";
import AbstractRedirectView from "./AbstractRedirectView.js";
export default class extends AbstractRedirectView{
constructor(params, url) {
super(params, url);
}
async redirect()
{
if (await client.isAuthentificate() === false)
return 0;
navigateTo(this.redirect_url);
return 1;
}
}

View File

@ -1,18 +1,13 @@
import AbstractView from "./AbstractView.js"; import AbstractAuthentificateView from "./AbstractAuthentificateView.js";
import { client, navigateTo } from "../index.js";
export default class extends AbstractView { export default class extends AbstractAuthentificateView {
constructor(params) { constructor(params) {
super(params); super(params);
this.setTitle("Home"); this.setTitle("Home");
this.redirect_url = "/login"
} }
async getHtml() { async getHtml() {
if (await client.isAuthentificate() === false)
{
navigateTo("/login");
return;
}
return ` return `
<h1>HOME</h1> <h1>HOME</h1>
<a href="/logout" class="nav__link" data-link>Logout</a> <a href="/logout" class="nav__link" data-link>Logout</a>

View File

@ -1,5 +1,5 @@
import AbstractView from "../AbstractView.js";
import { client, navigateTo } from "../../index.js"; import { client, navigateTo } from "../../index.js";
import AbstractUnAuthentificateView from "../AbstractUnAuthentificateView.js";
async function login() async function login()
{ {
@ -27,9 +27,9 @@ async function login()
}); });
} }
export default class extends AbstractView { export default class extends AbstractUnAuthentificateView {
constructor(params) { constructor(params) {
super(params); super(params, "/home");
} }
async postInit() async postInit()
@ -39,11 +39,6 @@ export default class extends AbstractView {
} }
async getHtml() { async getHtml() {
if (await client.isAuthentificate())
{
navigateTo("/home")
return;
}
return ` return `
<div class=form> <div class=form>
<label>Login</label> <label>Login</label>

View File

@ -1,13 +1,12 @@
import { client, navigateTo } from "../../index.js"; import { client, navigateTo } from "../../index.js";
import AbstractView from "../AbstractView.js"; import AbstractAuthentificateView from "../AbstractAuthentificateView.js";
export default class extends AbstractView export default class extends AbstractAuthentificateView
{ {
constructor(params) { constructor(params) {
super(params); super(params);
this.setTitle("Logout"); this.setTitle("Logout");
if (client.logged) client.logout();
client.logout();
navigateTo("/login") navigateTo("/login")
} }
} }

View File

@ -1,5 +1,5 @@
import AbstractView from "../AbstractView.js";
import { client, navigateTo } from "../../index.js"; import { client, navigateTo } from "../../index.js";
import AbstractUnAuthentificateView from "../AbstractUnAuthentificateView.js";
async function register() async function register()
{ {
@ -22,9 +22,9 @@ async function register()
}); });
} }
export default class extends AbstractView { export default class extends AbstractUnAuthentificateView {
constructor(params) { constructor(params) {
super(params); super(params, "/home");
} }
async postInit() async postInit()
@ -34,11 +34,6 @@ export default class extends AbstractView {
} }
async getHtml() { async getHtml() {
if (await client.isAuthentificate())
{
navigateTo("/home")
return;
}
return ` return `
<div class=form> <div class=form>
<label>Register</label> <label>Register</label>