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,7 +29,7 @@ export function AuthProvider({ children }) {
29 29
                 if (!CookiesUser || CookiesUser === 'undefined') {
30 30
                     return false
31 31
                 }
32
-                // TODO   
32
+                // TODO:
33 33
                 // add an method implmentation for 
34 34
                 // check if cockie jwt is valid
35 35
                 let logged = CookiesUser.length > 5
@@ -41,15 +41,24 @@ export function AuthProvider({ children }) {
41 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 45
         getProfile: () => {
46 46
             let CookieProfile = Cookies.get('profile');
47
-            if(CookieProfile){
47
+            if (CookieProfile) {
48 48
                 return JSON.parse(CookieProfile);
49
-            }else{
49
+            } else {
50 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 64
     return (

+ 12 - 1
src/Components/PrivateRoute.js

@@ -2,11 +2,22 @@ import { Navigate, useLocation } from 'react-router-dom';
2 2
 import useAuth from '../Auth/useAuth';
3 3
 
4 4
 export default function RequireAuth({ children }) {
5
+
5 6
     let auth = useAuth();
6 7
     let location = useLocation();
8
+    let { authorities } = auth.getRole();
9
+    authorities = authorities.map( e => e.toUpperCase());
10
+
7 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 21
     return children;
11 22
 }
12 23
 

+ 5 - 4
src/Pages/Login.jsx

@@ -64,12 +64,13 @@ export function Login() {
64 64
                 console.log(token);
65 65
 
66 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 72
                 auth.setProfile(empresa)
73
+                auth.setRole(body_token)
73 74
 
74 75
                 setTimeout( () => {
75 76
                     setOpen(false)

+ 9 - 6
src/Pages/Logincs.jsx

@@ -60,17 +60,20 @@ export function LoginCs() {
60 60
                 .then(response => {
61 61
 
62 62
                     console.log("Service Response :: ", response)
63
-                    let { token, nombre, apelidos } = response;
63
+                    let { token, nombre, apelidos, empresa } = response;
64 64
                     toast.success(`Bienvenido ${nombre} ${apelidos}!!`)
65 65
                     token = token.replace("Bearer ", "")
66 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 78
                     setTimeout(() => {
76 79
                         setOpen(false)