TP-28649 | Added Admin Permission Check and remove Read permission
This commit is contained in:
@@ -7,7 +7,7 @@ import LeftSideBar from './components/LeftSideBar';
|
||||
import { useAppDispatch, useAppSelector } from './redux/hooks';
|
||||
import { setAuthData, setAuthToken } from './redux/slices/GoogleAuthSlice';
|
||||
import { getRoutesMapping } from './routes';
|
||||
import { checkLitmusWritePermission } from './utils';
|
||||
import { checkAdminPermission } from './utils';
|
||||
|
||||
const initOptions = {
|
||||
url: (window as any)?.config.AUTH_BASE_URL,
|
||||
@@ -28,7 +28,7 @@ const App = () => {
|
||||
const { authData } = useAppSelector((state) => state.authStore);
|
||||
const { permissions } = authData || {};
|
||||
|
||||
const isWriteAllowed = checkLitmusWritePermission(permissions);
|
||||
const isAdmin = checkAdminPermission(permissions);
|
||||
|
||||
useEffect(() => {
|
||||
if ((window as any)?.config?.ENV === 'prod' || reactToken) {
|
||||
@@ -65,7 +65,7 @@ const App = () => {
|
||||
<BrowserRouter>
|
||||
<LeftSideBar>
|
||||
<Routes>
|
||||
{getRoutesMapping(isWriteAllowed)?.map((route) => (
|
||||
{getRoutesMapping(isAdmin)?.map((route) => (
|
||||
<Route path={route.path} element={route.element} />
|
||||
))}
|
||||
</Routes>
|
||||
|
||||
@@ -6,7 +6,7 @@ import Pagination from '@navi/web-ui/lib/components/Pagination';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { ROUTE_MAPPING, statusDropDownList } from '../../utils/constants';
|
||||
import {
|
||||
checkLitmusWritePermission,
|
||||
checkAdminPermission,
|
||||
getSelectedValueLabel,
|
||||
objToQueryString,
|
||||
usePaginationDetails,
|
||||
@@ -28,7 +28,7 @@ const Dashboard = () => {
|
||||
const { authData } = useAppSelector((state) => state.authStore);
|
||||
const { permissions } = authData || {};
|
||||
|
||||
const isUpdatedAllowed = checkLitmusWritePermission(permissions);
|
||||
const isAdmin = checkAdminPermission(permissions);
|
||||
|
||||
const [ownerDropDownList, setOwnerDropDownList] = useState<
|
||||
Array<DropDownList>
|
||||
@@ -123,7 +123,7 @@ const Dashboard = () => {
|
||||
<Button
|
||||
onClick={() => navigate('/create-experiment')}
|
||||
className={commonStyles['height-40']}
|
||||
disabled={!isUpdatedAllowed}
|
||||
disabled={!isAdmin}
|
||||
>
|
||||
Create Experiment
|
||||
</Button>
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
import React, { useState } from 'react';
|
||||
import { AgTable } from '@navi/web-ui/lib/components';
|
||||
import { Button, Typography } from '@navi/web-ui/lib/primitives';
|
||||
import React, { useState } from 'react';
|
||||
import AddSecondaryMetricModal from './AddSecondaryMetricModal';
|
||||
import styles from '../../EditExperiment.module.scss';
|
||||
import { useAppSelector } from '../../../../redux/hooks';
|
||||
import { checkLitmusWritePermission, getVariantsName } from '../../../../utils';
|
||||
import {
|
||||
checkAdminPermission,
|
||||
checkWritePermission,
|
||||
getVariantsName,
|
||||
} from '../../../../utils';
|
||||
import { ExperimentStatus, MetricLabel } from '../../../../utils/enums';
|
||||
|
||||
const SecondaryMetricTable = () => {
|
||||
@@ -17,7 +21,8 @@ const SecondaryMetricTable = () => {
|
||||
const { authData } = useAppSelector((state) => state.authStore);
|
||||
const { permissions } = authData || {};
|
||||
|
||||
const isUpdatedAllowed = checkLitmusWritePermission(permissions);
|
||||
const isUpdatedAllowed =
|
||||
checkWritePermission(permissions) || checkAdminPermission(permissions);
|
||||
const { overviewData, experimentInfo, variants } = updateExperiment || {};
|
||||
|
||||
const { experimentStatus } = experimentInfo || {};
|
||||
|
||||
@@ -11,7 +11,8 @@ import Footer from './Footer';
|
||||
import KeyValuePair from './KeyValuePair';
|
||||
import UpdateStrategy from './UpdateStrategy';
|
||||
import {
|
||||
checkLitmusWritePermission,
|
||||
checkAdminPermission,
|
||||
checkWritePermission,
|
||||
isStrategyDetails,
|
||||
} from '../../../../utils';
|
||||
import styles from '../../EditExperiment.module.scss';
|
||||
@@ -25,7 +26,8 @@ const TargetAudience = () => {
|
||||
const { authData } = useAppSelector((state) => state.authStore);
|
||||
const { permissions } = authData || {};
|
||||
|
||||
const isUpdatedAllowed = checkLitmusWritePermission(permissions);
|
||||
const isUpdatedAllowed =
|
||||
checkWritePermission(permissions) || checkAdminPermission(permissions);
|
||||
const { strategies, experimentInfo } = updateExperiment || {};
|
||||
|
||||
const { experimentStatus } = experimentInfo || {};
|
||||
|
||||
@@ -9,7 +9,8 @@ import KeyValuePair from './KeyValuePair';
|
||||
import { ExperimentStatus } from '../../../../utils/enums';
|
||||
import AddVariantForm from '../../../CreateExperiment/AddVariantForm';
|
||||
import {
|
||||
checkLitmusWritePermission,
|
||||
checkAdminPermission,
|
||||
checkWritePermission,
|
||||
isVariantDetails,
|
||||
} from '../../../../utils';
|
||||
import styles from '../../EditExperiment.module.scss';
|
||||
@@ -24,7 +25,8 @@ const Variants = () => {
|
||||
const { authData } = useAppSelector((state) => state.authStore);
|
||||
const { permissions } = authData || {};
|
||||
|
||||
const isUpdatedAllowed = checkLitmusWritePermission(permissions);
|
||||
const isUpdatedAllowed =
|
||||
checkWritePermission(permissions) || checkAdminPermission(permissions);
|
||||
const { variants, experimentInfo } = updateExperiment || {};
|
||||
|
||||
const { experimentStatus } = experimentInfo || {};
|
||||
|
||||
@@ -15,7 +15,8 @@ import { useAppSelector } from '../../../redux/hooks';
|
||||
import ConfirmDialog from './ConfirmDialog';
|
||||
import ExperimentDetailsModal from './ExperimentDetailsModal';
|
||||
import {
|
||||
checkLitmusWritePermission,
|
||||
checkAdminPermission,
|
||||
checkWritePermission,
|
||||
getExperimentStatusHeaderColor,
|
||||
showSuccesToast,
|
||||
} from '../../../utils/index';
|
||||
@@ -40,7 +41,8 @@ const Header = () => {
|
||||
const { authData } = useAppSelector((state) => state.authStore);
|
||||
const { permissions } = authData || {};
|
||||
|
||||
const isUpdatedAllowed = checkLitmusWritePermission(permissions);
|
||||
const isUpdatedAllowed =
|
||||
checkWritePermission(permissions) || checkAdminPermission(permissions);
|
||||
|
||||
const {
|
||||
experimentName,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React from 'react';
|
||||
import React, { useState } from 'react';
|
||||
import moment from 'moment';
|
||||
import SearchBarInput from '@navi/web-ui/lib/components/SearchBarInput/SearchBarInput';
|
||||
import Filter from '@navi/web-ui/lib/components/Filter/Filter';
|
||||
@@ -13,7 +13,7 @@ import {
|
||||
ROUTE_MAPPING,
|
||||
} from '../../utils/constants';
|
||||
import {
|
||||
checkLitmusWritePermission,
|
||||
checkAdminPermission,
|
||||
getSelectedValueLabel,
|
||||
objToQueryString,
|
||||
usePaginationDetails,
|
||||
@@ -29,7 +29,9 @@ import { CircularProgressLoader } from '../../components/circularProgressLoader'
|
||||
const Metrics = () => {
|
||||
const navigate = useNavigate();
|
||||
|
||||
const [showCustomModal, setShowCustomModal] = React.useState(false);
|
||||
const [showCustomModal, setShowCustomModal] = useState(false);
|
||||
const [metricId, setMetricId] = useState('');
|
||||
|
||||
const { metricsDetails, isLoading } = useAppSelector(
|
||||
(state) => state.litmusFormDataStore,
|
||||
);
|
||||
@@ -37,7 +39,7 @@ const Metrics = () => {
|
||||
const { authData } = useAppSelector((state) => state.authStore);
|
||||
const { permissions } = authData || {};
|
||||
|
||||
const isUpdatedAllowed = checkLitmusWritePermission(permissions);
|
||||
const isAdmin = checkAdminPermission(permissions);
|
||||
|
||||
const {
|
||||
handlePageChange,
|
||||
@@ -151,9 +153,12 @@ const Metrics = () => {
|
||||
|
||||
<div className={`${commonStyles['action-btn']}`}>
|
||||
<Button
|
||||
onClick={() => setShowCustomModal(true)}
|
||||
onClick={() => {
|
||||
setShowCustomModal(true);
|
||||
setMetricId('');
|
||||
}}
|
||||
className={commonStyles['height-40']}
|
||||
disabled={!isUpdatedAllowed}
|
||||
disabled={!isAdmin}
|
||||
>
|
||||
Create Custom Metric
|
||||
</Button>
|
||||
@@ -168,6 +173,10 @@ const Metrics = () => {
|
||||
theme="alpine"
|
||||
rowHeight={80}
|
||||
paginationWrapperClasses="pagination-wrapper"
|
||||
onRowClicked={(event) => {
|
||||
setShowCustomModal(true);
|
||||
setMetricId(event.data?.metricId);
|
||||
}}
|
||||
PaginationComponent={
|
||||
<Pagination
|
||||
totalCount={metricsDetails?.totalSize || 0}
|
||||
@@ -187,6 +196,7 @@ const Metrics = () => {
|
||||
<CreateMetricModal
|
||||
onClose={() => setShowCustomModal(false)}
|
||||
showCustomModal={showCustomModal}
|
||||
metricId={metricId}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -9,7 +9,7 @@ import AgTable from '@navi/web-ui/lib/components/AgTable';
|
||||
import Typography from '@navi/web-ui/lib/primitives/Typography';
|
||||
import { DefaultText, ROUTE_MAPPING } from '../../utils/constants';
|
||||
import {
|
||||
checkLitmusWritePermission,
|
||||
checkAdminPermission,
|
||||
getSelectedValueLabel,
|
||||
objToQueryString,
|
||||
usePaginationDetails,
|
||||
@@ -38,7 +38,7 @@ const Segmentation = () => {
|
||||
const { authData } = useAppSelector((state) => state.authStore);
|
||||
const { permissions } = authData || {};
|
||||
|
||||
const isUpdatedAllowed = checkLitmusWritePermission(permissions);
|
||||
const isAdmin = checkAdminPermission(permissions);
|
||||
|
||||
const { getTeamDropDownList, getSegmentations } = useExperimentsApi();
|
||||
|
||||
@@ -158,7 +158,7 @@ const Segmentation = () => {
|
||||
<Button
|
||||
onClick={() => setShowCustomModal(true)}
|
||||
className={commonStyles['height-40']}
|
||||
disabled={!isUpdatedAllowed}
|
||||
disabled={!isAdmin}
|
||||
>
|
||||
Create Segment
|
||||
</Button>
|
||||
|
||||
@@ -432,12 +432,12 @@ export const objToQueryString = (obj: object) => {
|
||||
return keyValuePairs.join('&');
|
||||
};
|
||||
|
||||
export const checkLitmusWritePermission = (permissions: any) => {
|
||||
export const checkWritePermission = (permissions: any) => {
|
||||
return permissions?.includes('litmus.experiment.WRITE') || false;
|
||||
};
|
||||
|
||||
export const checkLitmusReadPermission = (permissions: any) => {
|
||||
return permissions?.includes('litmus.experiment.READ') || false;
|
||||
export const checkAdminPermission = (permissions: any) => {
|
||||
return permissions?.includes('litmus.experiment.ADMIN') || false;
|
||||
};
|
||||
|
||||
export const logout = () => {
|
||||
|
||||
Reference in New Issue
Block a user