CFE-3 implementation permission
This commit is contained in:
@@ -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