Browse Source

auth provider role checker

amenpunk 2 years ago
parent
commit
cb550b1485
4 changed files with 40 additions and 16 deletions
  1. 14 5
      src/Auth/AuthProvider.js
  2. 12 1
      src/Components/PrivateRoute.js
  3. 5 4
      src/Pages/Login.jsx
  4. 9 6
      src/Pages/Logincs.jsx

+ 14 - 5
src/Auth/AuthProvider.js

29
                 if (!CookiesUser || CookiesUser === 'undefined') {
29
                 if (!CookiesUser || CookiesUser === 'undefined') {
30
                     return false
30
                     return false
31
                 }
31
                 }
32
-                // TODO   
32
+                // TODO:
33
                 // add an method implmentation for 
33
                 // add an method implmentation for 
34
                 // check if cockie jwt is valid
34
                 // check if cockie jwt is valid
35
                 let logged = CookiesUser.length > 5
35
                 let logged = CookiesUser.length > 5
41
                 return false
41
                 return false
42
             }
42
             }
43
         },
43
         },
44
-        setProfile: (obj) => Cookies.set('profile', JSON.stringify(obj) ),
44
+        setProfile: (obj) => Cookies.set('profile', JSON.stringify(obj)),
45
         getProfile: () => {
45
         getProfile: () => {
46
             let CookieProfile = Cookies.get('profile');
46
             let CookieProfile = Cookies.get('profile');
47
-            if(CookieProfile){
47
+            if (CookieProfile) {
48
                 return JSON.parse(CookieProfile);
48
                 return JSON.parse(CookieProfile);
49
-            }else{
49
+            } else {
50
                 return {}
50
                 return {}
51
             }
51
             }
52
-        } 
52
+        },
53
+        setRole: (role) => Cookies.set('role', JSON.stringify((role))),
54
+        getRole: () => {
55
+            let CookieRole = Cookies.get('role');
56
+            if (CookieRole) {
57
+                return JSON.parse(CookieRole);
58
+            } else {
59
+                return {}
60
+            }
61
+        }
53
     }
62
     }
54
 
63
 
55
     return (
64
     return (

+ 12 - 1
src/Components/PrivateRoute.js

2
 import useAuth from '../Auth/useAuth';
2
 import useAuth from '../Auth/useAuth';
3
 
3
 
4
 export default function RequireAuth({ children }) {
4
 export default function RequireAuth({ children }) {
5
+
5
     let auth = useAuth();
6
     let auth = useAuth();
6
     let location = useLocation();
7
     let location = useLocation();
8
+    let { authorities } = auth.getRole();
9
+    authorities = authorities.map( e => e.toUpperCase());
10
+
7
     if (!auth.isLogged()) {
11
     if (!auth.isLogged()) {
8
-        return <Navigate to="/login" state={{ from: location }} replace />;
12
+        if( authorities.includes("CANDIDATO")){
13
+            console.log("redirigir candidato")
14
+            return <Navigate to="/logincd" state={{ from: location }} replace />;
15
+        }else{
16
+            console.log("redirigir recluter")
17
+            return <Navigate to="/login" state={{ from: location }} replace />;
18
+        }
9
     }
19
     }
20
+
10
     return children;
21
     return children;
11
 }
22
 }
12
 
23
 

+ 5 - 4
src/Pages/Login.jsx

64
                 console.log(token);
64
                 console.log(token);
65
 
65
 
66
                 let body_token = jwt_decode(token);
66
                 let body_token = jwt_decode(token);
67
-                console.log(body_token)
68
-                let timestamp = body_token.exp * 1000;
69
-                let restante = timestamp - Date.now();
67
+                console.log('',body_token)
68
+                // let timestamp = body_token.exp * 1000;
69
+                // let restante = timestamp - Date.now();
70
 
70
 
71
-                setTimeout(() => alert("Token Expirado") , restante )
71
+                // setTimeout(() => alert("Token Expirado") , restante )
72
                 auth.setProfile(empresa)
72
                 auth.setProfile(empresa)
73
+                auth.setRole(body_token)
73
 
74
 
74
                 setTimeout( () => {
75
                 setTimeout( () => {
75
                     setOpen(false)
76
                     setOpen(false)

+ 9 - 6
src/Pages/Logincs.jsx

60
                 .then(response => {
60
                 .then(response => {
61
 
61
 
62
                     console.log("Service Response :: ", response)
62
                     console.log("Service Response :: ", response)
63
-                    let { token, nombre, apelidos } = response;
63
+                    let { token, nombre, apelidos, empresa } = response;
64
                     toast.success(`Bienvenido ${nombre} ${apelidos}!!`)
64
                     toast.success(`Bienvenido ${nombre} ${apelidos}!!`)
65
                     token = token.replace("Bearer ", "")
65
                     token = token.replace("Bearer ", "")
66
                     console.log(token);
66
                     console.log(token);
67
 
67
 
68
-                    let { exp } = jwt_decode(token);
69
-                    let timestamp = exp * 1000;
70
-                    let restante = timestamp - Date.now();
68
+                    // let { exp } = jwt_decode(token);
69
+                    let body_token = jwt_decode(token);
70
+                    console.log("BODY TOKEN: ", body_token)
71
+                    // let timestamp = exp * 1000;
72
+                    // let restante = timestamp - Date.now();
71
 
73
 
72
-                    setTimeout(() => alert("Token Expirado"), restante)
73
-                    // auth.setProfile(empresa)
74
+                    // setTimeout(() => alert("Token Expirado"), restante)
75
+                    auth.setProfile(empresa)
76
+                    auth.setRole(body_token)
74
 
77
 
75
                     setTimeout(() => {
78
                     setTimeout(() => {
76
                         setOpen(false)
79
                         setOpen(false)