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 964x 964x 964x 964x 178x 178x 177x 177x 178x 1x 1x 177x 177x 178x 1x 1x 1x 964x 964x 964x 964x 964x 964x 964x 964x 964x 1x 453x 453x 453x 1x 1x 1x 453x 453x 453x 1x 1458x 1458x 1458x 1458x 1458x 1244x 1458x 1458x | 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)
);
}
|