0

im trying to verify JWT in front-end, as you see, i get a token in Login

.then((response) => {
            if(response.data.token) {
                localStorage.setItem('token', response.data.token);
                localStorage.setItem('user', response.data.user);
                console.log("Auth: ", auth);

and i call a function

const validateToken = () => {
    Axios.get("https://xx.xxx.xx.xx:xxxx/checkAuth", {
      headers: {"access-token": localStorage.token}
    }).then((response) => {
      setAuth(response.data);
    })
  };

to valide my token ... i get respond from back end that is stored in response.data but down here i called it THIS LINE you can see im calling this function, and trying to get respond from it -see bellow in code-

const validateToken = () => {
    Axios.get("https://xx.xxx.xx.xx:xxxx/checkAuth", {
      headers: {"access-token": localStorage.token}
    }).then((response) => {
      localStorage.authState = response.data;
    })
  };

  const handleSubmit = async (e) => {
    e.preventDefault();
    const login = () => {
        Axios.post("https://xx.xxx.xx.xx:xxxx/login", {
            email: email,
            password: pwd
          }).then((response) => {
            if(response.data.token) {
                localStorage.setItem('token', response.data.token);
                localStorage.setItem('user', response.data.user);
                validateToken();                                   `//  T H I S   L I N E`
                //after function done right, DO SOMETHING HERE, if failed, do something else
            } else {
                if(response.data.message === "401") {
                  setErrMsg('Missing Username or Password.');
                } else if(response.data.message === "402") {
                    setErrMsg("User doesn't exist.");
                  } else {
                      setErrMsg('No Server Response');
                    }
              }
        })
        .catch(function (error) {
            if (error.response) {
              console.log("Error: ", error.response.data);
              }
          });

i tried to store respond to local storage or variable and tried if(functionOutputIsRight) {do the right thing } else { do the other thing } i belive u know what i mean, but nothing helped, beacuse this function never finish before next lines go on down here after validateToken(); like i tried

validateToken();
console.log(localStorage.AuthState);

but it was always empty (undefined)

npatrik30
  • 27
  • 4

1 Answers1

-2
const validateToken = () => {
  return Axios.get("https://xx.xxx.xx.xx:xxxx/checkAuth", {
    headers: {"access-token": localStorage.token}
  }).then((response) => {
    setAuth(response.data);
  })
};
validateToken().then(() => /* do something */)
Konrad
  • 21,590
  • 4
  • 28
  • 64
  • validateToken().then(() => console.log("localStorage.AuthState: ", localStorage.AuthState)) thats how i tried it, at first i thinked that i get error from it, but it was from something else, nothing was shown in console from this line – npatrik30 Feb 26 '23 at 19:42