128 lines
2.2 KiB
JavaScript
128 lines
2.2 KiB
JavaScript
import { reactive } from "vue";
|
|
import { api, closeSession } from '@Services/Api';
|
|
import { resetPermissions } from '@Plugins/RolePermission';
|
|
|
|
/**
|
|
* Cache
|
|
*
|
|
* Permite cargar los datos una vez para la sesión actual. Se mantienen mientras
|
|
* no se recargue la página.
|
|
*/
|
|
const page = reactive({
|
|
lang: 'es',
|
|
app: {},
|
|
user: {
|
|
id: 0,
|
|
name: 'public'
|
|
}
|
|
})
|
|
|
|
/**
|
|
* Recarga datos en cache
|
|
*/
|
|
const reloadApp = () => {
|
|
const user = localStorage.user
|
|
const app = localStorage.app
|
|
|
|
if(user) {
|
|
page.user = JSON.parse(user);
|
|
}
|
|
|
|
if(app) {
|
|
page.app = JSON.parse(app);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Limpiar sesión de usuario
|
|
*/
|
|
const resetPage = () => {
|
|
localStorage.removeItem('user');
|
|
}
|
|
|
|
/**
|
|
* Permite buscar una opcionalmente
|
|
*/
|
|
const view = ({
|
|
name = '',
|
|
params = {},
|
|
query = {},
|
|
}) => ({
|
|
name: name,
|
|
params,
|
|
query,
|
|
})
|
|
|
|
/**
|
|
* Almacenar datos usuario
|
|
*/
|
|
const defineUser = (user) => {
|
|
localStorage.user = JSON.stringify({
|
|
id: user.id,
|
|
name: user.name,
|
|
lastname: `${user.paternal} ${user?.maternal ?? ''}`,
|
|
email: user.email,
|
|
phone: user.phone,
|
|
profile_photo_url: user.profile_photo_url,
|
|
profile_photo_path: user.profile_photo_path,
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Definir datos de la aplicación
|
|
*/
|
|
const defineApp = (app) => {
|
|
localStorage.app = JSON.stringify(app);
|
|
}
|
|
|
|
/**
|
|
* Instalar el componente de forma nativa
|
|
*/
|
|
const pagePlugin = {
|
|
install: (app, options) => {
|
|
app.config.globalProperties.$page = page;
|
|
app.config.globalProperties.$view = view;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Reload user
|
|
*/
|
|
const reloadUser = () => {
|
|
return api.get(route('user.show'), {
|
|
onSuccess: (r) => {
|
|
defineUser(r.user)
|
|
reloadApp()
|
|
|
|
return r.user;
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Cerrar sesión
|
|
*/
|
|
const logout = () => {
|
|
resetPermissions()
|
|
resetPage()
|
|
|
|
api.post(route('auth.logout'), {
|
|
onSuccess: (r) => {
|
|
if(r.is_revoked === true) {
|
|
closeSession()
|
|
}
|
|
}
|
|
});
|
|
};
|
|
|
|
export {
|
|
pagePlugin,
|
|
page,
|
|
defineApp,
|
|
defineUser,
|
|
reloadApp,
|
|
reloadUser,
|
|
resetPage,
|
|
logout,
|
|
view
|
|
} |