Browse Source

eliminar token after token exp time

amenpunk 2 years ago
parent
commit
6550f36ee9
2 changed files with 27 additions and 11 deletions
  1. 18 2
      src/Components/Dashboard.js
  2. 9 9
      src/Pages/Logincs.jsx

+ 18 - 2
src/Components/Dashboard.js

13
   KeyboardDoubleArrowLeft as LeftKey,
13
   KeyboardDoubleArrowLeft as LeftKey,
14
   Notifications as NotificationsIcon,
14
   Notifications as NotificationsIcon,
15
 } from '@mui/icons-material'
15
 } from '@mui/icons-material'
16
+import jwt_decode from "jwt-decode";
16
 
17
 
17
 import Logo from '../Images/evaluacion.jpeg';
18
 import Logo from '../Images/evaluacion.jpeg';
18
 import { stringAvatar } from '../Utils/avatar'
19
 import { stringAvatar } from '../Utils/avatar'
84
   const dispatch = useDispatch();
85
   const dispatch = useDispatch();
85
   const navigate = useNavigate()
86
   const navigate = useNavigate()
86
   const profile = useSelector((state) => state.recluter.info)
87
   const profile = useSelector((state) => state.recluter.info)
87
-  console.log('PROFILE: ', profile)
88
+  const auth = useSelector((state) => state.token.token)
88
 
89
 
89
   const CerrarSession = () => {
90
   const CerrarSession = () => {
90
     //TODO:
91
     //TODO:
105
     }
106
     }
106
   }
107
   }
107
   const [anchorElMovil, setAnchorElMov] = React.useState(false);
108
   const [anchorElMovil, setAnchorElMov] = React.useState(false);
108
-  React.useEffect(() => isMovil ? setOpen(false) : null, [isMovil])
109
+
110
+  React.useEffect(() => { 
111
+    if(isMovil){
112
+      setOpen(false)
113
+    }
114
+
115
+    const token = auth
116
+    const { exp } = jwt_decode(token);
117
+    let timestamp = exp * 1000;
118
+    let exp_in = timestamp - Date.now();
119
+    console.log("EXP IN : ", exp_in)
120
+    if(exp_in <= 0 ){
121
+      alert("TOKEN EXPIRADO, PORFAVOR INICIA SESSION")
122
+      dispatch(removeToken())
123
+    }
124
+  }, [isMovil,auth, dispatch])
109
 
125
 
110
   return (
126
   return (
111
     <ThemeProvider theme={mdTheme}>
127
     <ThemeProvider theme={mdTheme}>

+ 9 - 9
src/Pages/Logincs.jsx

41
   const dispatch = useDispatch();
41
   const dispatch = useDispatch();
42
   const handleClose = () => false
42
   const handleClose = () => false
43
   const navigate = useNavigate();
43
   const navigate = useNavigate();
44
-  let auth = useSelector((state) => state.token.candi)
44
+  const auth = useSelector((state) => state.token.candi)
45
 
45
 
46
   React.useEffect(() => {
46
   React.useEffect(() => {
47
     if(auth){
47
     if(auth){
48
-      let body_token = jwt_decode(auth.token);
48
+      const body_token = jwt_decode(auth.token);
49
       if(body_token.authorities.includes("Candidato")){
49
       if(body_token.authorities.includes("Candidato")){
50
         navigate('/user/home')
50
         navigate('/user/home')
51
       }
51
       }
59
       password: '',
59
       password: '',
60
     },
60
     },
61
     validationSchema: LoginSchema,
61
     validationSchema: LoginSchema,
62
-    onSubmit: async (values) => {
62
+    onSubmit: (values) => {
63
 
63
 
64
-      let { email, password } = values
64
+      const { email, password } = values
65
       setOpen(true)
65
       setOpen(true)
66
 
66
 
67
-      let url = `/user?user=${email}&password=${password}&typeusr=iscandidato`
68
-      let request = new Service(url);
67
+      const url = `/user?user=${email}&password=${password}&typeusr=iscandidato`
68
+      const request = new Service(url);
69
       request
69
       request
70
         .post({})
70
         .post({})
71
         .then(response => {
71
         .then(response => {
74
           let { token, nombre, apelidos, idcontrasenia : pass_id, idSueperContrasenia } = response;
74
           let { token, nombre, apelidos, idcontrasenia : pass_id, idSueperContrasenia } = response;
75
           toast.success(`Bienvenido ${nombre} ${apelidos}!!`)
75
           toast.success(`Bienvenido ${nombre} ${apelidos}!!`)
76
           token = token.replace("Bearer ", "")
76
           token = token.replace("Bearer ", "")
77
-          let { exp } = jwt_decode(token);
78
-          let body_token = jwt_decode(token);
77
+          const { exp } = jwt_decode(token);
78
+          const body_token = jwt_decode(token);
79
           console.log('body_toke: ', body_token)
79
           console.log('body_toke: ', body_token)
80
           body_token['pass'] = password;
80
           body_token['pass'] = password;
81
           body_token['passid'] = pass_id;
81
           body_token['passid'] = pass_id;
82
 
82
 
83
-          let timestamp = exp * 1000;
83
+          const timestamp = exp * 1000;
84
           let exp_in = timestamp - Date.now();
84
           let exp_in = timestamp - Date.now();
85
           let profile = {
85
           let profile = {
86
             email,
86
             email,