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 | 1x 1x 1x 1x 3074x 3074x 3074x 3074x 117x 117x 100x 100x 101x 1x 1x 100x 100x 117x 17x 17x 17x 3074x 3074x 3074x 3074x 3074x 3074x 1x 218x 218x 218x 1x 1x 1x 218x 218x 218x 1x 657x 657x 657x 657x 657x 494x 657x 657x | 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, initialData: true },
},
);
}
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)
);
}
|