Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
3267 stevensc 1
import {
2
  axios,
3
  isAndroidDevice,
4
  isIOSDevice,
3268 stevensc 5
  loginUserToNative,
6
  logoutUserToNative
3267 stevensc 7
} from '@utils'
2219 stevensc 8
import { actionsTypes } from './auth.types'
5 stevensc 9
 
96 stevensc 10
export const setPermissions = (permissions) => ({
5 stevensc 11
  type: actionsTypes.SET_PERMISSIONS,
2219 stevensc 12
  payload: permissions
13
})
5 stevensc 14
 
15
export const startLoading = () => ({
2219 stevensc 16
  type: actionsTypes.START_LOADING
17
})
5 stevensc 18
 
19
export const stopLoading = () => ({
2219 stevensc 20
  type: actionsTypes.STOP_LOADING
21
})
5 stevensc 22
 
2219 stevensc 23
export const logout = () => {
24
  return (dispatch) => {
2237 stevensc 25
    window.localStorage.removeItem('jwt')
26
    window.localStorage.removeItem('aes')
2219 stevensc 27
    dispatch(removeAuth())
28
  }
29
}
30
 
3267 stevensc 31
export const asyncLogout = () => {
32
  return async (dispatch) => {
33
    const response = await axios.get('/signout')
34
 
35
    const { success, data } = response.data
3268 stevensc 36
    const isAndroid = isAndroidDevice()
37
    const isIOS = isIOSDevice()
3267 stevensc 38
 
39
    if (!success) {
3268 stevensc 40
      const err = typeof data === 'string' ? data : 'Error al cerrar sesión'
3267 stevensc 41
      throw new Error(err)
42
    }
43
 
3268 stevensc 44
    if (isAndroid || isIOS) logoutUserToNative(data.uuid)
45
 
3267 stevensc 46
    dispatch(logout())
47
 
48
    return data
49
  }
50
}
51
 
3262 stevensc 52
export const asyncLogin = ({ email, password, remember, captcha }) => {
53
  return async (dispatch) => {
54
    const formData = new FormData()
55
    formData.append('email', email)
56
    formData.append('password', password)
57
    formData.append('remember', remember)
58
    formData.append('captcha', captcha)
59
 
60
    const response = await axios.post('/signin', formData)
61
 
62
    const { success, data } = response.data
3267 stevensc 63
    const isAndroid = isAndroidDevice()
64
    const isIOS = isIOSDevice()
3262 stevensc 65
 
66
    if (!success) {
67
      const err = typeof data === 'string' ? data : 'Error al iniciar sesión'
68
      throw new Error(err)
69
    }
70
 
3268 stevensc 71
    if (isAndroid || isIOS) loginUserToNative(data.uuid)
3267 stevensc 72
 
3262 stevensc 73
    dispatch(login())
74
 
3263 stevensc 75
    const redirectPath = new URL(data.redirect).pathname
76
    return { ...data, redirect: redirectPath }
3262 stevensc 77
  }
78
}
79
 
66 stevensc 80
export const login = () => ({
2219 stevensc 81
  type: actionsTypes.LOGIN
82
})
5 stevensc 83
 
2219 stevensc 84
export const removeAuth = () => ({
85
  type: actionsTypes.LOGOUT
86
})