mirror of
https://github.com/empayre/fleet.git
synced 2024-11-08 01:38:57 +00:00
f127f8c2cd
* add new permission routes and messaging * add messaing for no permissions * query-library-os-icons (#913) Added query library os icons to website assets. * fix broken check for config before api responds Co-authored-by: Mike Thomas <78363703+mike-j-thomas@users.noreply.github.com>
51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
import React from "react";
|
|
import { useDispatch, useSelector } from "react-redux";
|
|
import { push } from "react-router-redux";
|
|
|
|
import { IUser } from "interfaces/user";
|
|
import permissionUtils from "utilities/permissions";
|
|
import paths from "router/paths";
|
|
// @ts-ignore
|
|
import { renderFlash } from "redux/nodes/notifications/actions";
|
|
|
|
interface IAuthAnyMaintainerGlobalAdminRoutesProps {
|
|
children: JSX.Element;
|
|
}
|
|
|
|
interface IRootState {
|
|
auth: {
|
|
user: IUser;
|
|
};
|
|
}
|
|
|
|
const { HOME } = paths;
|
|
|
|
/**
|
|
* Checks if a user is a global admin or global maintainer when routing
|
|
*/
|
|
const AuthAnyMaintainerGlobalAdminRoutes = (
|
|
props: IAuthAnyMaintainerGlobalAdminRoutesProps
|
|
) => {
|
|
const { children } = props;
|
|
|
|
const dispatch = useDispatch();
|
|
const user = useSelector((state: IRootState) => state.auth.user);
|
|
|
|
if (!user) {
|
|
return null;
|
|
}
|
|
|
|
if (
|
|
!permissionUtils.isGlobalAdmin(user) &&
|
|
!permissionUtils.isGlobalMaintainer(user) &&
|
|
!permissionUtils.isAnyTeamMaintainer(user)
|
|
) {
|
|
dispatch(push(HOME));
|
|
dispatch(renderFlash("error", "You do not have permissions for that page"));
|
|
return null;
|
|
}
|
|
return <>{children}</>;
|
|
};
|
|
|
|
export default AuthAnyMaintainerGlobalAdminRoutes;
|