Add notifications
This commit is contained in:
parent
ff829e5922
commit
7c92d9d9bc
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-card flat>
|
<v-card flat>
|
||||||
<v-form ref="form" v-model="valid" lazy-validation>
|
<v-form ref="form" v-model="valid">
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
<v-text-field
|
<v-text-field
|
||||||
v-model="form.username"
|
v-model="form.username"
|
||||||
@ -52,9 +52,16 @@ export default {
|
|||||||
}),
|
}),
|
||||||
methods: {
|
methods: {
|
||||||
userLogin() {
|
userLogin() {
|
||||||
this.$auth.loginWith('local', {
|
this.$auth
|
||||||
data: this.form,
|
.loginWith('local', {
|
||||||
})
|
data: this.form,
|
||||||
|
})
|
||||||
|
.then((_) =>
|
||||||
|
this.$root.$emit('toast', 'Welcome back', 'success')
|
||||||
|
)
|
||||||
|
.catch((_) =>
|
||||||
|
this.$root.$emit('toast', 'Invalid credentials', 'error')
|
||||||
|
)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-card flat>
|
<v-card flat>
|
||||||
<v-form ref="form" v-model="valid" lazy-validation>
|
<v-form ref="form" v-model="valid">
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
<v-text-field
|
<v-text-field
|
||||||
v-model="form.username"
|
v-model="form.username"
|
||||||
@ -57,7 +57,7 @@ import { mdiLock, mdiAccount, mdiAt } from '@mdi/js'
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'RegisterForm',
|
name: 'RegisterForm',
|
||||||
data: () => ({
|
data: (vm) => ({
|
||||||
mdiLock,
|
mdiLock,
|
||||||
mdiAccount,
|
mdiAccount,
|
||||||
mdiAt,
|
mdiAt,
|
||||||
@ -67,7 +67,10 @@ export default {
|
|||||||
email: '',
|
email: '',
|
||||||
password: '',
|
password: '',
|
||||||
},
|
},
|
||||||
usernameRules: [(v) => !!v || 'Name is required'],
|
usernameRules: [
|
||||||
|
(v) => !!v || 'Name is required',
|
||||||
|
(v) => /^[a-zA-Z0-9]+$/.test(v) || 'Name must be alphanumeric',
|
||||||
|
],
|
||||||
emailRules: [
|
emailRules: [
|
||||||
(v) => !!v || 'Email is required',
|
(v) => !!v || 'Email is required',
|
||||||
(v) => /.+@.+/.test(v) || 'E-mail must be valid',
|
(v) => /.+@.+/.test(v) || 'E-mail must be valid',
|
||||||
@ -79,13 +82,21 @@ export default {
|
|||||||
confirm: '',
|
confirm: '',
|
||||||
confirmRules: [
|
confirmRules: [
|
||||||
(v) => !!v || 'Password is required',
|
(v) => !!v || 'Password is required',
|
||||||
// v => confirmEquals() || 'Both passwords must be equals',
|
(v) => v === vm.form.password || 'Both passwords must be equals',
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
methods: {
|
methods: {
|
||||||
async registerUser() {
|
registerUser() {
|
||||||
const data = await this.$axios.post('/user', this.form)
|
this.$axios
|
||||||
console.log(data)
|
.post('/user', this.form)
|
||||||
|
.then((_) => this.$root.$emit('register::success'))
|
||||||
|
.catch((_) =>
|
||||||
|
this.$root.$emit(
|
||||||
|
'toast',
|
||||||
|
'Please choose another username',
|
||||||
|
'error'
|
||||||
|
)
|
||||||
|
)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,9 @@
|
|||||||
<v-row no-gutters justify="center">
|
<v-row no-gutters justify="center">
|
||||||
<nuxt />
|
<nuxt />
|
||||||
</v-row>
|
</v-row>
|
||||||
|
<v-snackbar v-model="toast" :color="color">{{
|
||||||
|
msg
|
||||||
|
}}</v-snackbar>
|
||||||
</v-container>
|
</v-container>
|
||||||
</v-content>
|
</v-content>
|
||||||
</v-app>
|
</v-app>
|
||||||
@ -16,6 +19,18 @@ import Navbar from '@/components/Navbar'
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { Navbar },
|
components: { Navbar },
|
||||||
|
data: () => ({
|
||||||
|
toast: false,
|
||||||
|
color: '',
|
||||||
|
msg: '',
|
||||||
|
}),
|
||||||
|
mounted() {
|
||||||
|
this.$root.$on('toast', (msg, color) => {
|
||||||
|
this.msg = msg
|
||||||
|
this.color = color ?? ''
|
||||||
|
this.toast = true
|
||||||
|
})
|
||||||
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@ -94,7 +94,7 @@ export default {
|
|||||||
redirect: {
|
redirect: {
|
||||||
login: '/account',
|
login: '/account',
|
||||||
logout: '/',
|
logout: '/',
|
||||||
home: '/',
|
home: '/notes',
|
||||||
},
|
},
|
||||||
watchLoggedIn: true,
|
watchLoggedIn: true,
|
||||||
cookie: {
|
cookie: {
|
||||||
|
|||||||
@ -48,6 +48,12 @@ export default {
|
|||||||
tab: 0,
|
tab: 0,
|
||||||
tabs: ['Login', 'Register'],
|
tabs: ['Login', 'Register'],
|
||||||
}),
|
}),
|
||||||
|
mounted() {
|
||||||
|
this.$root.$on('register::success', () => {
|
||||||
|
this.$root.$emit('toast', 'Welcome', 'success')
|
||||||
|
this.tab = 0
|
||||||
|
})
|
||||||
|
},
|
||||||
head: () => ({
|
head: () => ({
|
||||||
title: 'Account',
|
title: 'Account',
|
||||||
}),
|
}),
|
||||||
|
|||||||
0
frontend/store/notes.js
Normal file
0
frontend/store/notes.js
Normal file
Loading…
x
Reference in New Issue
Block a user