Files
servicio_social_front/pages/index.vue
T
2021-01-19 19:17:25 -06:00

139 lines
3.3 KiB
Vue

<template>
<section class="container p-2 log">
<div class="fix columns is-mobile">
<div @keydown.enter.prevent="enviar()" class="container column is-12-mobile is-6-desktop is-6-tablet cont">
<h1 class="has-text-centered is-size-1">IRIS</h1>
<b-field
label="Usuario"
:type="usuarioValido()"
>
<b-input v-model="usuario"></b-input>
</b-field>
<b-field label="Contraseña">
<b-input v-model="password" type="password" password-reveal></b-input>
</b-field>
<b-field class="center">
<button
:disabled="usuario == '' || password == '' || ( password == '' && error == true)"
class="button is-success is-medium"
@click="enviar()"
type="submit"
>
Iniciar sesion
</button>
</b-field>
</div>
</div>
<b-loading :is-full-page="true" v-model="isLoading" :can-cancel="false" />
</section>
</template>
<script>
import validator from "validator";
import axios from "axios";
export default {
data() {
return {
usuario: "",
password: "",
error: false,
isLoading: false,
};
},
methods: {
usuarioValido() {
if (!this.usuario) {
this.error = true;
}
if (validator.isNumeric(this.usuario, { no_symbols: true })) {
if (this.usuario.length === 10) {
}
return "";
} else if (validator.isEmail(this.usuario)) {
return "";
} else if (validator.isAlpha(this.usuario)) {
return "";
}
this.error = true;
},
enviar() {
this.isLoading=true
const data = {
usuario: this.usuario.trim(),
password: this.password,
};
axios
.post(`${process.env.api}/usuario/login`, data)
.then((resp) => {
window.localStorage.setItem("idUsuario", resp.data.Usuario.idUsuario);
window.localStorage.setItem("token", resp.data.token);
window.localStorage.setItem("nombre", resp.data.Usuario.nombre);
window.localStorage.setItem(
"idTipoUsuario",
resp.data.Usuario.TipoUsuario.idTipoUsuario
);
window.localStorage.setItem(
"tipoUsuario",
resp.data.Usuario.TipoUsuario.tipoUsuario
);
window.localStorage.setItem("usuario", resp.data.Usuario.usuario);
this.$router.push(`/${resp.data.Usuario.TipoUsuario.tipoUsuario}`);
})
.catch((error) => {
this.$buefy.dialog.alert({
title: "Error",
message: error.response.data.message,
type: "is-danger",
hasIcon: true,
icon: "alert-circle",
iconPack: "mdi",
ariaRole: "alertdialog",
ariaModal: true,
});
})
.finally(()=>{
this.isLoading =false
});
},
},
watch: {
usuario() {
this.error = false;
},
},
layout: "login",
};
</script>
<style scoped>
footer[data-v-cf943d08] {
display: none !important;
}
.fix {
height: 85vh;
display: flex;
justify-content: center;
align-items: center;
}
.cont {
height: auto;
padding: 0 1rem;
}
.cont * {
margin: 1rem 0;
}
.center {
text-align: center;
}
.columns {
margin: 0;
}
</style>