Lab 6 ВОТ ТАК ПОЛУЧШЕ

This commit is contained in:
Павел Сорокин 2023-05-10 13:26:08 +04:00
parent 99a8de13ba
commit 07a73fa1c4
2 changed files with 31 additions and 33 deletions

View File

@ -1,17 +1,47 @@
import { useState, useEffect } from "react";
import { Link } from 'react-router-dom';
import { useNavigate,Link } from 'react-router-dom';
const NavBar = function (props) {
const [userRole, setUserRole] = useState("NONE");
const navigate = useNavigate();
useEffect(() => {
window.addEventListener("storage", () => {
let token = localStorage.getItem("token");
if (token) {
getRole(token).then((role) => {
if (localStorage.getItem("role") != role) {
localStorage.removeItem("token");
localStorage.removeItem("user");
localStorage.removeItem("role");
window.dispatchEvent(new Event("storage"));
navigate("/login");
}
});
}
getUserRole();
});
getUserRole();
}, [])
const getRole = async function (token) {
const requestParams = {
method: "GET",
headers: {
"Content-Type": "application/json"
}
};
const requestUrl = `http://localhost:8080/who_am_i?token=${token}`;
const response = await fetch(requestUrl, requestParams);
const result = await response.text();
return result;
}
const getUserRole = function () {
const role = localStorage.getItem("role") || "NONE";
setUserRole(role);

View File

@ -3,38 +3,6 @@ import { useEffect, useState } from "react";
const PrivateRoutes = (props) => {
const navigate = useNavigate();
useEffect(() => {
window.addEventListener("storage", () => {
let token = localStorage.getItem("token");
if (token) {
getRole(token).then((role) => {
if (localStorage.getItem("role") != role) {
localStorage.removeItem("token");
localStorage.removeItem("user");
localStorage.removeItem("role");
window.dispatchEvent(new Event("storage"));
navigate("/main");
}
});
}
});
}, [])
const getRole = async function (token) {
const requestParams = {
method: "GET",
headers: {
"Content-Type": "application/json"
}
};
const requestUrl = `http://localhost:8080/who_am_i?token=${token}`;
const response = await fetch(requestUrl, requestParams);
const result = await response.text();
return result;
}
let isAllowed = false;
let userRole = localStorage.getItem("role");
if ((props.userGroup === "AUTH" && userRole) || (props.userGroup === userRole)) {