front: redirect to last visited page after login
This commit is contained in:
parent
e1e6e6c1ab
commit
60a3e02420
@ -22,6 +22,7 @@ import TournamentCreateView from "./views/tournament/TournamentCreateView.js";
|
|||||||
let client = new Client(location.protocol + "//" + location.host)
|
let client = new Client(location.protocol + "//" + location.host)
|
||||||
|
|
||||||
let lastView = undefined
|
let lastView = undefined
|
||||||
|
let lastPageUrlBeforeLogin = undefined
|
||||||
|
|
||||||
const pathToRegex = path => new RegExp("^" + path.replace(/\//g, "\\/").replace(/:\w+/g, "(.+)") + "$");
|
const pathToRegex = path => new RegExp("^" + path.replace(/\//g, "\\/").replace(/:\w+/g, "(.+)") + "$");
|
||||||
|
|
||||||
@ -106,12 +107,14 @@ const router = async(uri) => {
|
|||||||
if (lastView !== undefined)
|
if (lastView !== undefined)
|
||||||
await lastView.leavePage();
|
await lastView.leavePage();
|
||||||
|
|
||||||
const view = new match.route.view(getParams(match));
|
const view = new match.route.view(getParams(match), lastPageUrlBeforeLogin);
|
||||||
|
|
||||||
if (view instanceof AbstractRedirectView && await view.redirect())
|
if (view instanceof AbstractRedirectView && await view.redirect())
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
lastView = view;
|
lastView = view;
|
||||||
|
if (uri !== '/login' && uri !== '/register' && uri !== '/logout')
|
||||||
|
lastPageUrlBeforeLogin = uri;
|
||||||
|
|
||||||
if (await renderView(view))
|
if (await renderView(view))
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -2,7 +2,7 @@ import { client, navigateTo } from "../../index.js";
|
|||||||
import { clear, fill_errors } from "../../utils/formUtils.js";
|
import { clear, fill_errors } from "../../utils/formUtils.js";
|
||||||
import AbstractNonAuthentifiedView from "../abstracts/AbstractNonAuthentified.js";
|
import AbstractNonAuthentifiedView from "../abstracts/AbstractNonAuthentified.js";
|
||||||
|
|
||||||
async function login()
|
async function login(redirectTo = '/home')
|
||||||
{
|
{
|
||||||
clear('innerHTML', ['username', 'password', 'login']);
|
clear('innerHTML', ['username', 'password', 'login']);
|
||||||
|
|
||||||
@ -23,7 +23,7 @@ async function login()
|
|||||||
if (response.status == 200) {
|
if (response.status == 200) {
|
||||||
await client.notice.disconnect();
|
await client.notice.disconnect();
|
||||||
await client.notice.connect();
|
await client.notice.connect();
|
||||||
navigateTo("/home");
|
navigateTo(redirectTo);
|
||||||
} else {
|
} else {
|
||||||
let error = await response.json();
|
let error = await response.json();
|
||||||
fill_errors(error, "innerHTML");
|
fill_errors(error, "innerHTML");
|
||||||
@ -31,8 +31,9 @@ async function login()
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default class extends AbstractNonAuthentifiedView {
|
export default class extends AbstractNonAuthentifiedView {
|
||||||
constructor(params) {
|
constructor(params, lastUrlBeforeLogin = '/home') {
|
||||||
super(params, "Login", "/home");
|
super(params, "Login", lastUrlBeforeLogin);
|
||||||
|
this.redirectTo = lastUrlBeforeLogin;
|
||||||
}
|
}
|
||||||
|
|
||||||
async postInit()
|
async postInit()
|
||||||
@ -40,15 +41,15 @@ export default class extends AbstractNonAuthentifiedView {
|
|||||||
let usernameField = document.getElementById('usernameInput');
|
let usernameField = document.getElementById('usernameInput');
|
||||||
usernameField.addEventListener('keydown', ev => {
|
usernameField.addEventListener('keydown', ev => {
|
||||||
if (ev.key === 'Enter')
|
if (ev.key === 'Enter')
|
||||||
login();
|
login(this.redirectTo);
|
||||||
});
|
});
|
||||||
usernameField.focus();
|
usernameField.focus();
|
||||||
let passwordField = document.getElementById('passwordInput');
|
let passwordField = document.getElementById('passwordInput');
|
||||||
passwordField.addEventListener('keydown', ev => {
|
passwordField.addEventListener('keydown', ev => {
|
||||||
if (ev.key === 'Enter')
|
if (ev.key === 'Enter')
|
||||||
login();
|
login(this.redirectTo);
|
||||||
});
|
});
|
||||||
document.getElementById('loginButton').onclick = login;
|
document.getElementById('loginButton').onclick = _ => login(this.redirectTo);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getHtml() {
|
async getHtml() {
|
||||||
|
@ -3,13 +3,14 @@ import AbstractAuthentifiedView from "../abstracts/AbstractAuthentifiedView.js";
|
|||||||
|
|
||||||
export default class extends AbstractAuthentifiedView
|
export default class extends AbstractAuthentifiedView
|
||||||
{
|
{
|
||||||
constructor(params) {
|
constructor(params, lastPageUrl = '/login') {
|
||||||
super(params, "Logout");
|
super(params, "Logout");
|
||||||
|
this.lastPageUrl = lastPageUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
async postInit() {
|
async postInit() {
|
||||||
await client.logout();
|
await client.logout();
|
||||||
await client.notice.disconnect();
|
await client.notice.disconnect();
|
||||||
navigateTo("/login")
|
navigateTo(this.lastPageUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ import { client, navigateTo } from "../../index.js";
|
|||||||
import { clear, fill_errors } from "../../utils/formUtils.js";
|
import { clear, fill_errors } from "../../utils/formUtils.js";
|
||||||
import AbstractNonAuthentifiedView from "../abstracts/AbstractNonAuthentified.js";
|
import AbstractNonAuthentifiedView from "../abstracts/AbstractNonAuthentified.js";
|
||||||
|
|
||||||
async function register()
|
async function register(redirectTo = '/home')
|
||||||
{
|
{
|
||||||
let username = document.getElementById("usernameInput").value;
|
let username = document.getElementById("usernameInput").value;
|
||||||
let password = document.getElementById("passwordInput").value;
|
let password = document.getElementById("passwordInput").value;
|
||||||
@ -20,7 +20,7 @@ async function register()
|
|||||||
|
|
||||||
if (response_data == null)
|
if (response_data == null)
|
||||||
{
|
{
|
||||||
navigateTo("/home");
|
navigateTo(redirectTo);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,8 +29,9 @@ async function register()
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default class extends AbstractNonAuthentifiedView {
|
export default class extends AbstractNonAuthentifiedView {
|
||||||
constructor(params) {
|
constructor(params, lastUrlBeforeLogin = '/home') {
|
||||||
super(params, "Register", "/home");
|
super(params, "Register", lastUrlBeforeLogin);
|
||||||
|
this.redirectTo = lastUrlBeforeLogin;
|
||||||
}
|
}
|
||||||
|
|
||||||
async postInit()
|
async postInit()
|
||||||
@ -38,15 +39,15 @@ export default class extends AbstractNonAuthentifiedView {
|
|||||||
let usernameField = document.getElementById('usernameInput');
|
let usernameField = document.getElementById('usernameInput');
|
||||||
usernameField.addEventListener('keydown', ev => {
|
usernameField.addEventListener('keydown', ev => {
|
||||||
if (ev.key === 'Enter')
|
if (ev.key === 'Enter')
|
||||||
register();
|
register(this.redirectTo);
|
||||||
});
|
});
|
||||||
usernameField.focus();
|
usernameField.focus();
|
||||||
let passwordField = document.getElementById('passwordInput');
|
let passwordField = document.getElementById('passwordInput');
|
||||||
passwordField.addEventListener('keydown', ev => {
|
passwordField.addEventListener('keydown', ev => {
|
||||||
if (ev.key === 'Enter')
|
if (ev.key === 'Enter')
|
||||||
register();
|
register(this.redirectTo);
|
||||||
});
|
});
|
||||||
document.getElementById("registerButton").onclick = register;
|
document.getElementById("registerButton").onclick = _ => register(this.redirectTo);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getHtml() {
|
async getHtml() {
|
||||||
|
Loading…
Reference in New Issue
Block a user