1
- import React , { useState , useEffect } from 'react' ;
1
+ import React , { } from 'react' ;
2
2
import './App.css' ;
3
- import { BrowserRouter as Router , Switch , Route , Link , Redirect , useRouteMatch , useParams , useHistory } from "react-router-dom" ;
4
- import { useForm } from 'react-hook-form' ;
3
+ import { BrowserRouter as Router , Switch , Route , Link , Redirect , useHistory } from "react-router-dom" ;
5
4
import { useSelector , useDispatch } from 'react-redux' ;
6
- import { PostDetail , PostCreate , PostEdit , PostDelete , Posts , Home } from "./components/Posts" ;
5
+ import { PostCreate , Posts , Home } from "./components/Posts" ;
7
6
import { Login } from "./components/Login" ;
8
7
import { Register } from "./components/Register" ;
9
8
import { Constants } from "./constants" ;
10
- import { usePermission , checkPermission } from "./hooks/usePermission .js" ;
9
+ import { checkPermission } from "./utils/permissionManager .js" ;
11
10
import { ResourceCreate , ResourceList } from "./components/Resource" ;
12
- import Permission from "./components/Permission" ;
13
- import Role from './components/Role' ;
11
+ import { PermissionCreate } from "./components/Permission" ;
12
+ import { RoleCreate } from './components/Role' ;
14
13
15
- export const PrivateRoute = ( { component : Component , ...rest } ) => {
14
+ export const PrivateRoute = ( { component : Component , name : resource , ...rest } ) => {
16
15
17
16
const userContext = useSelector ( state => {
18
17
return state . userContext ;
19
18
} ) ;
20
19
21
- const isAllowed = checkPermission ( Component . name , userContext ) ;
20
+ const isAllowed = checkPermission ( resource , userContext ) ;
22
21
23
22
return (
24
23
< Route { ...rest } render = { props => {
@@ -74,18 +73,18 @@ const App = () => {
74
73
//console.log('userContext', userContext);
75
74
76
75
let links = [
77
- { name : 'link-posts' , url : '/posts' , text : 'Posts' } ,
78
- { name : 'link-post-create' , url : '/post-create' , text : 'Create post' } ,
79
- { name : 'link-permission-create' , url : '/permission-create' , text : 'Create permission' } ,
80
- { name : 'link-role-create' , url : '/role-create' , text : 'Create role' } ,
81
- { name : 'link-resource-create' , url : '/resource-create' , text : 'Create resource' } ,
82
- { name : 'link-resource-list' , url : '/resource-list' , text : 'List resource' } ,
76
+ { name : 'link-posts' , url : '/posts' , text : 'Posts' , component : Posts } ,
77
+ { name : 'link-post-create' , url : '/post-create' , text : 'Create post' , component : PostCreate } ,
78
+ { name : 'link-permission-create' , url : '/permission-create' , text : 'Create permission' , component : PermissionCreate } ,
79
+ { name : 'link-role-create' , url : '/role-create' , text : 'Create role' , component : RoleCreate } ,
80
+ { name : 'link-resource-create' , url : '/resource-create' , text : 'Create resource' , component : ResourceCreate } ,
81
+ { name : 'link-resource-list' , url : '/resource-list' , text : 'List resource' , component : ResourceList } ,
83
82
] ;
84
83
85
- let routes = [
86
- { path : '/resource-create' , component : ResourceCreate } ,
87
- { path : '/resource-list' , component : ResourceList }
88
- ]
84
+ // let routes = [
85
+ // { path: '/resource-create', component: ResourceCreate },
86
+ // { path: '/resource-list', component: ResourceList }
87
+ // ]
89
88
90
89
return (
91
90
< Router >
@@ -99,7 +98,7 @@ const App = () => {
99
98
< >
100
99
{
101
100
links . map ( ( link , index ) => {
102
- return < Link key = { index } to = { link . url } className = "list-group-item list-group-item-action bg-light" > { link . text } </ Link >
101
+ return checkPermission ( link . name , userContext ) && < Link key = { index } to = { link . url } className = "list-group-item list-group-item-action bg-light" > { link . text } </ Link >
103
102
} )
104
103
}
105
104
</ >
@@ -114,21 +113,20 @@ const App = () => {
114
113
115
114
< div className = "container" >
116
115
< Switch >
117
- < PrivateRoute path = "/post-detail/:id" component = { PostDetail } > </ PrivateRoute >
116
+ { /* <PrivateRoute path="/post-detail/:id" component={PostDetail}></PrivateRoute>
118
117
<PrivateRoute path="/post-create" component={PostCreate}></PrivateRoute>
119
118
<PrivateRoute path="/post-edit/:id" component={PostEdit}></PrivateRoute>
120
119
<PrivateRoute path="/post-delete/:id" component={PostDelete}></PrivateRoute>
121
- < PrivateRoute path = "/posts" component = { Posts } > </ PrivateRoute >
122
- < Route path = "/login" component = { Login } > </ Route >
123
- < Route path = "/register" component = { Register } > </ Route >
124
- < Route path = "/basic" component = { ResourceCreate } > </ Route >
125
- < Route path = "/permission-create" component = { Permission } > </ Route >
126
- < Route path = "/role-create" component = { Role } > </ Route >
120
+ <PrivateRoute path="/posts" component={Posts}></PrivateRoute> */ }
121
+ { /* <Route path="/permission-create" component={PermissionCreate}></Route>
122
+ <Route path="/role-create" component={RoleCreate}></Route> */ }
127
123
{
128
- routes . map ( route => {
129
- return < Route path = { route . path } component = { route . component } > </ Route > ;
124
+ links . map ( route => {
125
+ return < PrivateRoute key = { route . name } path = { route . url } component = { route . component } name = { route . name } > </ PrivateRoute > ;
130
126
} )
131
127
}
128
+ < Route path = "/login" component = { Login } > </ Route >
129
+ < Route path = "/register" component = { Register } > </ Route >
132
130
< Route path = "/" > < Home /> </ Route >
133
131
</ Switch >
134
132
</ div >
0 commit comments