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 738x 738x 738x 738x 166x 166x 113x 113x 114x 1x 1x 113x 113x 166x 53x 53x 53x 738x 738x 738x 738x 738x 738x 1x 329x 329x 329x 1x 1x 1x 329x 329x 329x 1x 617x 617x 617x 617x 617x 432x 617x 617x | 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)
);
}
|