CFE-3Merge branch 'feature/CFE-3_implementation_role_permission' into 'develop'

This commit is contained in:
AmirHossein Mahmoodi
2023-10-30 10:34:53 +00:00
5 changed files with 47 additions and 6 deletions

View File

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

View File

@@ -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>
</>
);
};

View File

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

View 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;

View 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();
});
});
});
});