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 54 55 56 | 1x 1x 1x 1x 169x 169x 169x 169x 50x 50x 43x 43x 48x 1x 1x 43x 43x 48x 7x 7x 7x 50x 169x 169x 169x 169x 1x 97x 97x 97x 1x 1x 1x 1x 97x 97x 1x 721x 721x 721x 721x 721x 721x 102x 102x 721x 721x | 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(
"current user",
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);
throw e;
}
},
{
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("current user", { exact: true });
navigate("/");
});
return mutation;
}
export function hasRole(currentUser, role) {
// The following hack is because there is some bug in terms of the
// shape of the data returned by useCurrentUser. Is there a separate
// data level, or not?
// We will file an issue to track that down and then remove this hack
if (currentUser == null) return false;
if (currentUser.data?.root?.rolesList) {
return currentUser.data.root.rolesList.includes(role);
}
return currentUser.root?.rolesList?.includes(role);
}
|