munch-ease-frontend/src/components/LoginPage.vue

108 lines
2.1 KiB
Vue
Raw Normal View History

2024-04-28 02:13:49 +00:00
<template>
<div class="login">
2024-05-21 11:08:55 +00:00
<h1>Login Page</h1>
<ul class="button-group">
<li v-for="person in persons" :key="person.id">
<button type="button" class="btn btn-primary" @click="login(person)">
{{ person.name }}
</button>
</li>
</ul>
2024-04-28 02:13:49 +00:00
</div>
</template>
2024-05-21 11:08:55 +00:00
<style scoped>
/* Remove the default list styling */
ul {
list-style-type: none;
padding: 0;
}
/* Center the buttons in the middle of the page, and let them wrap */
.button-group {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
/* Display each button as a large round circle */
button {
width: 100px;
height: 100px;
border-radius: 50%;
margin: 10px;
font-size: 1.5em;
/* Center the text in the middle of the button */
display: flex;
justify-content: center;
align-items: center;
2024-05-21 11:19:22 +00:00
/* Add a shadow to make the buttons look like they are floating */
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
}
/* Some nice flat nuetral shades for the user buttons */
li:nth-child(1) > button {
background-color: #3939ff;
color: white;
}
li:nth-child(2) > button {
background-color: #156a14;
color: white;
2024-05-21 11:08:55 +00:00
}
2024-05-21 11:19:22 +00:00
li:nth-child(3) > button {
background-color: #325293;
color: white;
}
li:nth-child(4) > button {
background-color: #9a1f1f;
color: white;
}
2024-05-21 11:08:55 +00:00
</style>
2024-04-28 02:13:49 +00:00
<script>
2025-10-18 01:42:23 +00:00
import { getPersonsInHome } from '@/api/persons';
import { login } from '@/api/auth';
2024-04-28 02:13:49 +00:00
export default {
name: 'LoginVue',
props: {
redirect: {
type: String,
default: '/'
2024-05-21 11:08:55 +00:00
},
2024-04-28 02:13:49 +00:00
},
data() {
return {
2024-05-21 11:08:55 +00:00
persons: [],
2024-04-28 02:13:49 +00:00
}
},
2024-05-21 11:08:55 +00:00
async beforeMount() {
2025-10-18 01:42:23 +00:00
this.persons = await getPersonsInHome();
2024-05-21 11:08:55 +00:00
},
2024-04-28 02:13:49 +00:00
methods: {
2024-05-21 11:08:55 +00:00
async login(selectedPerson) {
2025-10-18 01:42:23 +00:00
const person = await login(selectedPerson.name);
2024-05-20 12:16:39 +00:00
if (person?.id >= 0) {
2024-04-28 02:13:49 +00:00
this.$router.push(this.redirect);
return;
}
alert('Login failed');
}
}
}
2024-05-21 11:08:55 +00:00
</script>