Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 63 | Rev 65 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
32 stevensc 1
import { axios } from "../../utils";
2
import { actionsTypes } from "./auth.types";
5 stevensc 3
 
63 stevensc 4
const getPermissions = () => {
5 stevensc 5
  return (dispatch) => {
32 stevensc 6
    dispatch(startLoading());
5 stevensc 7
    axios
32 stevensc 8
      .get("/signin", { headers: { "Content-Type": "application/json" } })
38 stevensc 9
      .then((response) => {
63 stevensc 10
        const { success, data } = response.data;
38 stevensc 11
 
63 stevensc 12
        if (!success) {
13
          throw new Error(data);
38 stevensc 14
        }
15
 
63 stevensc 16
        if (data.jwt) {
17
          window.localStorage.setItem("jwt", data.jwt);
18
        }
19
 
20
        dispatch(setPermissions(data));
5 stevensc 21
      })
22
      .catch((err) => {
32 stevensc 23
        console.log(err);
24
        throw new Error(err);
5 stevensc 25
      })
32 stevensc 26
      .finally(() => dispatch(stopLoading()));
27
  };
28
};
5 stevensc 29
 
63 stevensc 30
export const validateAuth = () => {
31
  return (dispatch) => {
32
    const token = window.localStorage.getItem("jwt");
33
 
34
    if (token) {
64 stevensc 35
      return dispatch(login());
63 stevensc 36
    }
37
 
38
    dispatch(getPermissions());
39
  };
40
};
41
 
5 stevensc 42
const setPermissions = (permissions) => ({
43
  type: actionsTypes.SET_PERMISSIONS,
44
  payload: permissions,
32 stevensc 45
});
5 stevensc 46
 
47
export const startLoading = () => ({
48
  type: actionsTypes.START_LOADING,
32 stevensc 49
});
5 stevensc 50
 
51
export const stopLoading = () => ({
52
  type: actionsTypes.STOP_LOADING,
32 stevensc 53
});
5 stevensc 54
 
55
export const login = () => ({
56
  type: actionsTypes.LOGIN,
32 stevensc 57
});
5 stevensc 58
 
59
export const logout = () => ({
60
  type: actionsTypes.LOGOUT,
32 stevensc 61
});