TP-28649 | Added Admin Permission Check and remove Read permission

This commit is contained in:
yashmantri
2023-05-16 13:07:56 +05:30
parent 3b0baffe67
commit 64992d3583
9 changed files with 48 additions and 27 deletions

View File

@@ -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>

View File

@@ -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>

View File

@@ -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 || {};

View File

@@ -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 || {};

View File

@@ -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 || {};

View File

@@ -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,

View File

@@ -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>

View File

@@ -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>

View File

@@ -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 = () => {