Rev 3268 | Rev 3396 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import {
axios,
isAndroidDevice,
isIOSDevice,
loginUserToNative,
logoutUserToNative
} from '@utils'
import { actionsTypes } from './auth.types'
export const setPermissions = (permissions) => ({
type: actionsTypes.SET_PERMISSIONS,
payload: permissions
})
export const startLoading = () => ({
type: actionsTypes.START_LOADING
})
export const stopLoading = () => ({
type: actionsTypes.STOP_LOADING
})
export const logout = () => {
return (dispatch) => {
window.localStorage.removeItem('jwt')
dispatch(removeAuth())
}
}
export const asyncLogout = () => {
return async (dispatch) => {
const response = await axios.get('/signout')
const { success, data } = response.data
const isAndroid = isAndroidDevice()
const isIOS = isIOSDevice()
if (!success) {
const err = typeof data === 'string' ? data : 'Error al cerrar sesión'
throw new Error(err)
}
if (isAndroid || isIOS) logoutUserToNative(data.uuid)
dispatch(logout())
return data
}
}
export const asyncLogin = ({ email, password, remember, captcha }) => {
return async (dispatch) => {
const formData = new FormData()
formData.append('email', email)
formData.append('password', password)
formData.append('remember', remember)
formData.append('captcha', captcha)
const response = await axios.post('/signin', formData)
const { success, data } = response.data
const isAndroid = isAndroidDevice()
const isIOS = isIOSDevice()
if (!success) {
const err = typeof data === 'string' ? data : 'Error al iniciar sesión'
throw new Error(err)
}
if (isAndroid || isIOS) loginUserToNative(data.uuid)
dispatch(login())
const redirectPath = new URL(data.redirect).pathname
return { ...data, redirect: redirectPath }
}
}
export const login = () => ({
type: actionsTypes.LOGIN
})
export const removeAuth = () => ({
type: actionsTypes.LOGOUT
})