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 | 1x 1x 1x 1x 215x 215x 215x 215x 80x 80x 60x 60x 68x 1x 1x 60x 60x 80x 20x 1x 20x 19x 19x 19x 20x 215x 215x 215x 215x 215x 1x 137x 137x 137x 137x 1x 1x 1x 137x 137x 137x 137x 1x 1944x 1944x 1944x | import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import axios from "axios";
import { useNavigate } from "react-router";
export function useCurrentUser() {
let rolesList = ["ERROR_GETTING_ROLES"];
const queryResults = useQuery({
queryKey: ["current user"],
queryFn: 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) {
if (e.status === 403) {
return { loggedIn: false, root: {} };
} else {
console.error("Error invoking axios.get: ", e);
throw e;
}
}
},
initialData: { loggedIn: false, root: null, initialData: true },
});
return queryResults.data;
}
export function useLogout() {
const queryClient = useQueryClient();
const navigate = useNavigate();
const mutation = useMutation({
mutationFn: async () => {
await axios.post("/logout");
await queryClient.resetQueries({ queryKey: ["current user"] });
navigate("/");
},
});
return mutation;
}
export function hasRole(currentUser, role) {
if (currentUser == null) return false;
return currentUser.root?.rolesList?.includes(role);
}
|