fix
This commit is contained in:
parent
9e6b5cc2db
commit
b43b77ac12
BIN
data.mv.db
BIN
data.mv.db
Binary file not shown.
@ -24,8 +24,6 @@ export default function App() {
|
|||||||
{ path: 'catalog', label: "Catalog", userGroup: "AUTH" },
|
{ path: 'catalog', label: "Catalog", userGroup: "AUTH" },
|
||||||
{ path: 'readerAction', label: "ReaderAction", userGroup: "USER" },
|
{ path: 'readerAction', label: "ReaderAction", userGroup: "USER" },
|
||||||
{ path: 'creatorAction', label: "CreatorAction", userGroup: "ADMIN" },
|
{ path: 'creatorAction', label: "CreatorAction", userGroup: "ADMIN" },
|
||||||
{ path: 'creator', label: "Creator", userGroup: "ADMIN" },
|
|
||||||
{ path: 'reader', label: "Reader", userGroup: "ADMIN" },
|
|
||||||
{ path: 'users', label: "Users", userGroup: "ADMIN" }
|
{ path: 'users', label: "Users", userGroup: "ADMIN" }
|
||||||
];
|
];
|
||||||
return (
|
return (
|
||||||
|
@ -2,7 +2,38 @@ import {NavLink, useNavigate} from 'react-router-dom';
|
|||||||
import {useEffect, useState} from "react";
|
import {useEffect, useState} from "react";
|
||||||
|
|
||||||
export default function Header(props) {
|
export default function Header(props) {
|
||||||
|
|
||||||
const navigate = useNavigate();
|
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("/catalog");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
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);
|
||||||
|
return await response.text();
|
||||||
|
}
|
||||||
|
|
||||||
const logoutButtonOnClick = function () {
|
const logoutButtonOnClick = function () {
|
||||||
localStorage.removeItem("token");
|
localStorage.removeItem("token");
|
||||||
localStorage.removeItem("user");
|
localStorage.removeItem("user");
|
||||||
|
@ -10,10 +10,8 @@ export default function ReaderList(props) {
|
|||||||
props.readers?.map((reader) =>
|
props.readers?.map((reader) =>
|
||||||
<div key={reader.id} className="d-flex flex-row flex-wrap flex-grow-1 align-items-center mt-3">
|
<div key={reader.id} className="d-flex flex-row flex-wrap flex-grow-1 align-items-center mt-3">
|
||||||
<div>
|
<div>
|
||||||
<div className="pt-3 description d-flex flex-column justify-content-start mb-3 fs-6 fw-bold">
|
<div className="text-white pt-3 description d-flex flex-column justify-content-start mb-3 fs-6 fw-bold">
|
||||||
<NavLink className="text-white fs-5 fw-bold pt-3 mb-3"
|
Имя пользователя: {reader.login}
|
||||||
to={`/readeraction?id=${reader.id}`}>Имя пользователя: {reader.readerName}
|
|
||||||
</NavLink>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -3,36 +3,7 @@ import {useEffect} from "react";
|
|||||||
|
|
||||||
const PrivateRoutes = (props) => {
|
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("/catalog");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
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);
|
|
||||||
return await response.text();
|
|
||||||
}
|
|
||||||
|
|
||||||
let isAllowed = false;
|
let isAllowed = false;
|
||||||
let userRole = localStorage.getItem("role");
|
let userRole = localStorage.getItem("role");
|
||||||
|
@ -23,8 +23,6 @@ public class UserDto {
|
|||||||
this.email = user.getEmail();
|
this.email = user.getEmail();
|
||||||
this.password = user.getPassword();
|
this.password = user.getPassword();
|
||||||
this.role = user.getRole();
|
this.role = user.getRole();
|
||||||
this.creatortId = user.getCreator().getId();
|
|
||||||
this.readerId = user.getReader().getId();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setId(Long id) {
|
public void setId(Long id) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user