CFE-3Merge branch 'feature/CFE-3_implementation_role_permission' into 'develop'
This commit is contained in:
@@ -10,6 +10,8 @@ NEXT_PUBLIC_BASE_URL = "https://crm.witel.ir"
|
||||
NEXT_PUBLIC_SERVER_SOCKET_URL = "wss://crmws.witel.ir"
|
||||
NEXT_PUBLIC_POWERED_BY_URL = "https://witel.ir"
|
||||
|
||||
NEXT_HAS_NOTIFICATION = "false"
|
||||
#["NEXT_PUBLIC_HAS_WIDGET" , "NEXT_PUBLIC_HAS_NOTIFICATION"]
|
||||
NEXT_PUBLIC_HAS_VALUE=["NEXT_PUBLIC_HAS_WIDGET"]
|
||||
|
||||
NODE_ENV = "development"
|
||||
|
||||
NODE_ENV = "development"
|
||||
@@ -1,12 +1,15 @@
|
||||
import CallWidget from "src/components/layouts/Dashboard/CallWidget";
|
||||
import Dashboard from "src/components/layouts/Dashboard";
|
||||
import AppPermission from "@/middlewares/AppPermission";
|
||||
import CallWidget from "@/components/layouts/Dashboard/CallWidget";
|
||||
|
||||
const DashboardLayout = (props) => {
|
||||
|
||||
const permissions = ["NEXT_PUBLIC_HAS_WIDGET"];
|
||||
return (
|
||||
<>
|
||||
<Dashboard {...props}/>
|
||||
<CallWidget/>
|
||||
<AppPermission permissions={permissions}>
|
||||
<CallWidget />
|
||||
</AppPermission>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import useSWR from 'swr'
|
||||
import {GET_SIDEBAR_NOTIFICATION} from "@/core/data/apiRoutes";
|
||||
import useRequest from "@/lib/app/hooks/useRequest";
|
||||
const isNotificationEnabled = process.env.NEXT_HAS_NOTIFICATION === "true";
|
||||
const GLOBAL_HAS_VALUE = process.env.NEXT_PUBLIC_HAS_VALUE;
|
||||
const hasPermissionsValue = GLOBAL_HAS_VALUE ? JSON.parse(GLOBAL_HAS_VALUE) : [];
|
||||
const isNotificationEnabled = hasPermissionsValue.includes("NEXT_PUBLIC_HAS_NOTIFICATION");
|
||||
|
||||
const useNotification = () => {
|
||||
|
||||
|
||||
8
src/middlewares/AppPermission.jsx
Normal file
8
src/middlewares/AppPermission.jsx
Normal file
@@ -0,0 +1,8 @@
|
||||
const GLOBAL_HAS_VALUE = process.env.NEXT_PUBLIC_HAS_VALUE;
|
||||
const hasPermissionsValue = GLOBAL_HAS_VALUE ? JSON.parse(GLOBAL_HAS_VALUE) : [];
|
||||
|
||||
const AppPermission = ({ children , permissions }) => {
|
||||
return permissions.some(permission => hasPermissionsValue.includes(permission)) ? <>{children}</> : null;
|
||||
};
|
||||
|
||||
export default AppPermission;
|
||||
26
src/middlewares/__test__/AppPermission.test.js
Normal file
26
src/middlewares/__test__/AppPermission.test.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import {render, screen, waitFor} from '@testing-library/react';
|
||||
import MockAppWithProviders from "../../../mocks/AppWithProvider";
|
||||
import AppPermission from "@/middlewares/AppPermission";
|
||||
|
||||
describe('AppPermission From middlewares', () => {
|
||||
describe('Behavior', () => {
|
||||
it('show related child if permission exist', async () => {
|
||||
|
||||
const requiredPermissions = ["NEXT_PUBLIC_HAS_WIDGET"];
|
||||
render(<MockAppWithProviders><AppPermission permissions={requiredPermissions}/>{'children'}</MockAppWithProviders>);
|
||||
|
||||
await waitFor(()=>{
|
||||
expect(screen.queryByText('children')).toBeInTheDocument();
|
||||
})
|
||||
});
|
||||
it('do not show related child if permission does not exist', async () => {
|
||||
|
||||
const requiredPermissions = ["MISSING_PERMISSION"];
|
||||
render(<MockAppWithProviders><AppPermission permissions={requiredPermissions} /></MockAppWithProviders>);
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.queryByText('children')).not.toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user