Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 1x 1x 1x 1x 582x 582x 582x 582x 144x 144x 142x 142x 144x 1x 1x 142x 142x 144x 2x 2x 2x 582x 582x 582x 582x 582x 582x 582x 582x 582x 1x 274x 274x 274x 1x 1x 1x 274x 274x 274x 1x 615x 615x 615x 615x 615x 506x 615x 615x | import { useMutation, useQuery, useQueryClient } from "react-query";
import axios from "axios";
import { useNavigate } from "react-router";
export function useCurrentUser() {
let rolesList = ["ERROR_GETTING_ROLES"];
return useQuery(
"/api/currentUser",
async () => {
try {
const response = await axios.get("/api/currentUser");
try {
rolesList = response.data.roles.map((r) => r.authority);
} catch (e) {
console.error("Error getting roles: ", e);
}
response.data = { ...response.data, rolesList: rolesList };
return { loggedIn: true, root: response.data };
} catch (e) {
console.error("Error invoking axios.get: ", e);
return { loggedIn: false, root: null };
}
},
{
initialData: {
loggedIn: false,
root: null,
},
},
);
}
export function useLogout() {
const queryClient = useQueryClient();
const navigate = useNavigate();
const mutation = useMutation(async () => {
await axios.post("/logout");
await queryClient.resetQueries("/api/currentUser", { exact: true });
navigate("/");
});
return mutation;
}
export function hasRole(currentUser, role) {
return (
currentUser &&
currentUser.loggedIn &&
currentUser.root &&
currentUser.root.rolesList &&
currentUser.root.rolesList.includes(role)
);
}
|