Skip to content
Snippets Groups Projects
Commit 39172c55 authored by Yehor Potebenko's avatar Yehor Potebenko
Browse files

feat: implement current logged user memorization in the application

parent 3f90c9da
No related branches found
No related tags found
2 merge requests!5First version,!3Login page validation
......@@ -120,7 +120,7 @@ export async function getMe(req, res) {
return res.status(serverResponse.status.httpSuccess).json({
user,
token,
messaage: serverResponse.message.user.isFound,
message: serverResponse.message.user.isFound,
});
} catch (error) {
return res.status(serverResponse.status.httpNoAccess).json({
......
......@@ -31,3 +31,17 @@ export async function authUser(userData) {
return error;
}
}
export async function getUserInfo(token) {
try {
const response = await fetch(`${ROOT}/me`, {
headers: {
Authorization: `Bearer ${token}`,
},
});
const data = await response.json();
return data;
} catch (error) {
return error;
}
}
......@@ -2,7 +2,11 @@ import './index.html';
import './style.scss';
import Router from '../../js/modules/login/Router.mjs';
import validateFields from '../../js/modules/login/_validation.mjs';
import { registerUser, authUser } from '../../js/modules/login/_requests.mjs';
import {
registerUser,
authUser,
getUserInfo,
} from '../../js/modules/login/_requests.mjs';
import { requestEndpoints } from '../../js/modules/login/services/endpoints.mjs';
const enterForm = document.querySelector('.login__form');
......@@ -10,7 +14,43 @@ const enterForm = document.querySelector('.login__form');
const loginSwitcher = document.querySelector('.login__account-join');
const formSubmitMessage = enterForm.querySelector('._empty-error');
async function submitRegistrationForm(formData, form = enterForm) {
function admitNewUser(message, form = enterForm) {
formSubmitMessage.textContent = message;
setTimeout(() => {
form.submit();
form.reset();
formSubmitMessage.textContent = '';
window.location.href = requestEndpoints.login;
}, 1500);
}
function admitLoggedUser(form = enterForm) {
formSubmitMessage.textContent = 'You are already logged in!';
setTimeout(() => {
form.reset();
window.location.href = requestEndpoints.mainPage;
}, 1000);
}
function admitRegisteredUser(token, message, form = enterForm) {
window.sessionStorage.setItem('token', token);
formSubmitMessage.textContent = message;
setTimeout(() => {
form.submit();
form.reset();
formSubmitMessage.textContent = '';
window.location.href = requestEndpoints.mainPage;
}, 1500);
}
function rejectUser(message) {
formSubmitMessage.textContent = message;
}
async function submitRegistrationForm(formData) {
const { success, message } = await registerUser({
username: formData.username,
email: formData.userEmail,
......@@ -18,33 +58,31 @@ async function submitRegistrationForm(formData, form = enterForm) {
});
if (success) {
formSubmitMessage.textContent = message;
setTimeout(() => {
form.submit();
form.reset();
formSubmitMessage.textContent = '';
window.location.href = requestEndpoints.login;
}, 1500);
} else formSubmitMessage.textContent = message;
const tokenExists = Boolean(window.sessionStorage.getItem('token'));
if (tokenExists) window.sessionStorage.removeItem('token');
admitNewUser(message);
} else rejectUser(message);
}
async function submitLoginForm(formData, form = enterForm) {
const { success, message } = await authUser({
async function submitLoginForm(formData) {
const { success, message, token } = await authUser({
username: formData.username,
password: formData.userPassword,
});
if (success) {
formSubmitMessage.textContent = message;
setTimeout(() => {
form.submit();
form.reset();
formSubmitMessage.textContent = '';
window.location.href = requestEndpoints.mainPage;
}, 1500);
} else formSubmitMessage.textContent = message;
const tokenExists = Boolean(window.sessionStorage.getItem('token'));
if (tokenExists) {
const currentToken = window.sessionStorage.getItem('token');
const currentUserData = await getUserInfo(currentToken);
if (formData.username === currentUserData.user.username)
admitLoggedUser();
else admitRegisteredUser(token, message);
} else admitRegisteredUser(token, message);
} else rejectUser(message);
}
window.addEventListener('load', () => {
......
import './index.html';
import './style.scss';
// * TEST TOKEN
// import { getUserInfo } from '../../js/modules/login/_requests.mjs';
// async function findUser() {
// const token = window.sessionStorage.getItem('token');
// return token ? getUserInfo(token) : null;
// }
// const userData = await findUser();
// console.log('user:', userData);
// * TEST TOKEN
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment