}
}, {
name: "Account Settings",
+ adminOnly: true,
icon: UserPanelIcon,
execute: (dispatch, { uuid }) => {
dispatch<any>(navigateToUserProfile(uuid));
}
}, {
name: "Setup User",
+ adminOnly: true,
icon: AdminMenuIcon,
execute: (dispatch, { uuid }) => {
dispatch<any>(openSetupDialog(uuid));
}
}, {
name: "Deactivate User",
+ adminOnly: true,
icon: DeactivateUserIcon,
execute: (dispatch, { uuid }) => {
dispatch<any>(openDeactivateDialog(uuid));
}
}, {
name: "Login As User",
+ adminOnly: true,
icon: LoginAsIcon,
execute: (dispatch, { uuid }) => {
dispatch<any>(loginAs(uuid));
type DataProps = Pick<ContextMenuProps, "anchorEl" | "items" | "open"> & { resource?: ContextMenuResource };
const mapStateToProps = (state: RootState): DataProps => {
const { open, position, resource } = state.contextMenu;
+ const isAdmin = state.auth.user!.isAdmin;
return {
anchorEl: resource ? createAnchorAt(position) : undefined,
- items: getMenuActionSet(resource),
+ items: getMenuActionSet(resource, isAdmin),
open,
resource
};
};
const emptyActionSet: ContextMenuActionSet = [];
-const getMenuActionSet = (resource?: ContextMenuResource): ContextMenuActionSet => {
- return resource ? menuActionSets.get(resource.menuKind) || emptyActionSet : emptyActionSet;
+const getMenuActionSet = (resource?: ContextMenuResource, isAdmin?: boolean): ContextMenuActionSet => {
+ if (resource) {
+ return menuActionSets
+ .get(resource.menuKind)!
+ .map((group) => (group.filter((item) => (item.adminOnly ? isAdmin : true))))
+ || emptyActionSet
+ } else {
+ return emptyActionSet;
+ }
};
export enum ContextMenuKind {