import { snackbarActions, SnackbarKind } from '~/store/snackbar/snackbar-actions';
import { UserResource } from "~/models/user";
import { getResource } from '~/store/resources/resources';
-import { navigateToProject } from "~/store/navigation/navigation-action";
+import { navigateToProject, navigateToUsers, navigateToRootProject } from "~/store/navigation/navigation-action";
export const USERS_PANEL_ID = 'usersPanel';
export const USER_ATTRIBUTES_DIALOG = 'userAttributesDialog';
dispatch(userBindedActions.REQUEST_ITEMS());
return newUser;
} catch (e) {
- return ;
+ return;
+ }
+ };
+
+export const openUserPanel = () =>
+ async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+ const user = getState().auth.user;
+ if (user && user.isAdmin) {
+ dispatch<any>(navigateToUsers);
+ } else {
+ dispatch<any>(navigateToRootProject);
+ dispatch(snackbarActions.OPEN_SNACKBAR({ message: "You don't have permissions to view this page", hideDuration: 2000 }));
}
};
import { Dispatch } from "redux";
import { RootState } from '~/store/store';
import { ServiceRepository } from "~/services/services";
-import { navigateToUserVirtualMachines, navigateToAdminVirtualMachines } from "~/store/navigation/navigation-action";
+import { navigateToUserVirtualMachines, navigateToAdminVirtualMachines, navigateToRootProject } from "~/store/navigation/navigation-action";
import { bindDataExplorerActions } from '~/store/data-explorer/data-explorer-action';
import { formatDate } from "~/common/formatters";
import { unionize, ofType, UnionOf } from "~/common/unionize";
export const openAdminVirtualMachines = () =>
async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
- dispatch<any>(navigateToAdminVirtualMachines);
+ const user = getState().auth.user;
+ if (user && user.isAdmin) {
+ dispatch<any>(navigateToAdminVirtualMachines);
+ } else {
+ dispatch<any>(navigateToRootProject);
+ dispatch(snackbarActions.OPEN_SNACKBAR({ message: "You don't have permissions to view this page", hideDuration: 2000 }));
+ }
};
export const openVirtualMachineAttributes = (uuid: string) =>
navigateToApiClientAuthorizations
} from '~/store/navigation/navigation-action';
import { openAdminVirtualMachines } from "~/store/virtual-machines/virtual-machines-actions";
-import { navigateToUsers } from '~/store/navigation/navigation-action';
+import { openUserPanel } from "~/store/users/users-actions";
interface AdminMenuProps {
user?: User;
<MenuItem onClick={() => dispatch(openAdminVirtualMachines())}>Virtual Machines</MenuItem>
<MenuItem onClick={() => dispatch(navigateToSshKeysAdmin)}>Ssh Keys</MenuItem>
<MenuItem onClick={() => dispatch(navigateToApiClientAuthorizations)}>Api Tokens</MenuItem>
- <MenuItem onClick={() => dispatch(navigateToUsers)}>Users</MenuItem>
+ <MenuItem onClick={() => dispatch(openUserPanel())}>Users</MenuItem>
<MenuItem onClick={() => dispatch(navigateToComputeNodes)}>Compute Nodes</MenuItem>
<MenuItem onClick={() => dispatch(navigateToKeepServices)}>Keep Services</MenuItem>
<MenuItem onClick={() => dispatch(logout())}>Logout</MenuItem>