Przeglądaj źródła

auth provider role checker

amenpunk 3 lat temu
rodzic
commit
cb550b1485

+ 14 - 5
src/Auth/AuthProvider.js

@@ -29,7 +29,7 @@ export function AuthProvider({ children }) {
                 if (!CookiesUser || CookiesUser === 'undefined') {
                 if (!CookiesUser || CookiesUser === 'undefined') {
                     return false
                     return false
                 }
                 }
-                // TODO   
+                // TODO:
                 // add an method implmentation for 
                 // add an method implmentation for 
                 // check if cockie jwt is valid
                 // check if cockie jwt is valid
                 let logged = CookiesUser.length > 5
                 let logged = CookiesUser.length > 5
@@ -41,15 +41,24 @@ export function AuthProvider({ children }) {
                 return false
                 return false
             }
             }
         },
         },
-        setProfile: (obj) => Cookies.set('profile', JSON.stringify(obj) ),
+        setProfile: (obj) => Cookies.set('profile', JSON.stringify(obj)),
         getProfile: () => {
         getProfile: () => {
             let CookieProfile = Cookies.get('profile');
             let CookieProfile = Cookies.get('profile');
-            if(CookieProfile){
+            if (CookieProfile) {
                 return JSON.parse(CookieProfile);
                 return JSON.parse(CookieProfile);
-            }else{
+            } else {
                 return {}
                 return {}
             }
             }
-        } 
+        },
+        setRole: (role) => Cookies.set('role', JSON.stringify((role))),
+        getRole: () => {
+            let CookieRole = Cookies.get('role');
+            if (CookieRole) {
+                return JSON.parse(CookieRole);
+            } else {
+                return {}
+            }
+        }
     }
     }
 
 
     return (
     return (

+ 12 - 1
src/Components/PrivateRoute.js

@@ -2,11 +2,22 @@ import { Navigate, useLocation } from 'react-router-dom';
 import useAuth from '../Auth/useAuth';
 import useAuth from '../Auth/useAuth';
 
 
 export default function RequireAuth({ children }) {
 export default function RequireAuth({ children }) {
+
     let auth = useAuth();
     let auth = useAuth();
     let location = useLocation();
     let location = useLocation();
+    let { authorities } = auth.getRole();
+    authorities = authorities.map( e => e.toUpperCase());
+
     if (!auth.isLogged()) {
     if (!auth.isLogged()) {
-        return <Navigate to="/login" state={{ from: location }} replace />;
+        if( authorities.includes("CANDIDATO")){
+            console.log("redirigir candidato")
+            return <Navigate to="/logincd" state={{ from: location }} replace />;
+        }else{
+            console.log("redirigir recluter")
+            return <Navigate to="/login" state={{ from: location }} replace />;
+        }
     }
     }
+
     return children;
     return children;
 }
 }
 
 

+ 5 - 4
src/Pages/Login.jsx

@@ -64,12 +64,13 @@ export function Login() {
                 console.log(token);
                 console.log(token);
 
 
                 let body_token = jwt_decode(token);
                 let body_token = jwt_decode(token);
-                console.log(body_token)
-                let timestamp = body_token.exp * 1000;
-                let restante = timestamp - Date.now();
+                console.log('',body_token)
+                // let timestamp = body_token.exp * 1000;
+                // let restante = timestamp - Date.now();
 
 
-                setTimeout(() => alert("Token Expirado") , restante )
+                // setTimeout(() => alert("Token Expirado") , restante )
                 auth.setProfile(empresa)
                 auth.setProfile(empresa)
+                auth.setRole(body_token)
 
 
                 setTimeout( () => {
                 setTimeout( () => {
                     setOpen(false)
                     setOpen(false)

+ 9 - 6
src/Pages/Logincs.jsx

@@ -60,17 +60,20 @@ export function LoginCs() {
                 .then(response => {
                 .then(response => {
 
 
                     console.log("Service Response :: ", response)
                     console.log("Service Response :: ", response)
-                    let { token, nombre, apelidos } = response;
+                    let { token, nombre, apelidos, empresa } = response;
                     toast.success(`Bienvenido ${nombre} ${apelidos}!!`)
                     toast.success(`Bienvenido ${nombre} ${apelidos}!!`)
                     token = token.replace("Bearer ", "")
                     token = token.replace("Bearer ", "")
                     console.log(token);
                     console.log(token);
 
 
-                    let { exp } = jwt_decode(token);
-                    let timestamp = exp * 1000;
-                    let restante = timestamp - Date.now();
+                    // let { exp } = jwt_decode(token);
+                    let body_token = jwt_decode(token);
+                    console.log("BODY TOKEN: ", body_token)
+                    // let timestamp = exp * 1000;
+                    // let restante = timestamp - Date.now();
 
 
-                    setTimeout(() => alert("Token Expirado"), restante)
-                    // auth.setProfile(empresa)
+                    // setTimeout(() => alert("Token Expirado"), restante)
+                    auth.setProfile(empresa)
+                    auth.setRole(body_token)
 
 
                     setTimeout(() => {
                     setTimeout(() => {
                         setOpen(false)
                         setOpen(false)