2018-12-05 20:43:01 +11:00
|
|
|
import { validationMixin } from 'vuelidate'
|
|
|
|
import { required } from 'vuelidate/lib/validators'
|
|
|
|
import { mapActions, mapState } from 'vuex'
|
2018-12-05 20:47:42 +11:00
|
|
|
import { SIGN_UP } from '../../mutation_types'
|
2018-11-07 07:48:05 +11:00
|
|
|
|
2017-04-16 02:12:23 +10:00
|
|
|
const registration = {
|
2018-12-05 20:43:01 +11:00
|
|
|
mixins: [validationMixin],
|
2017-04-16 02:12:23 +10:00
|
|
|
data: () => ({
|
2018-12-05 20:43:01 +11:00
|
|
|
user: {
|
|
|
|
email: '',
|
|
|
|
username: '',
|
|
|
|
password: '',
|
|
|
|
confirm: ''
|
|
|
|
},
|
|
|
|
clientValidationFailed: false
|
2017-04-16 02:12:23 +10:00
|
|
|
}),
|
2018-12-05 20:43:01 +11:00
|
|
|
validations: {
|
|
|
|
user: {
|
|
|
|
email: { required },
|
|
|
|
username: { required },
|
|
|
|
password: { required },
|
|
|
|
confirm: { required }
|
|
|
|
}
|
|
|
|
},
|
2017-06-20 17:37:51 +10:00
|
|
|
created () {
|
2018-09-10 04:21:23 +10:00
|
|
|
if ((!this.$store.state.instance.registrationOpen && !this.token) || !!this.$store.state.users.currentUser) {
|
2017-06-20 17:37:51 +10:00
|
|
|
this.$router.push('/main/all')
|
|
|
|
}
|
2018-08-05 17:01:38 +10:00
|
|
|
// Seems like this doesn't work at first page open for some reason
|
2018-09-10 04:21:23 +10:00
|
|
|
if (this.$store.state.instance.registrationOpen && this.token) {
|
2018-08-05 17:01:38 +10:00
|
|
|
this.$router.push('/registration')
|
|
|
|
}
|
2017-06-20 17:37:51 +10:00
|
|
|
},
|
2017-06-19 23:35:35 +10:00
|
|
|
computed: {
|
2018-12-05 20:43:01 +11:00
|
|
|
token () { return this.$route.params.token },
|
|
|
|
...mapState({
|
|
|
|
isPending: (state) => state.users[SIGN_UP.isPending],
|
|
|
|
serverValidationErrors: (state) => state.users[SIGN_UP.errors],
|
2018-12-05 20:47:42 +11:00
|
|
|
termsofservice: (state) => state.instance.tos
|
2018-12-05 20:43:01 +11:00
|
|
|
})
|
2017-06-19 23:35:35 +10:00
|
|
|
},
|
2017-04-16 02:12:23 +10:00
|
|
|
methods: {
|
2018-12-05 20:43:01 +11:00
|
|
|
...mapActions(['signUp']),
|
2017-04-16 02:12:23 +10:00
|
|
|
submit () {
|
|
|
|
this.user.nickname = this.user.username
|
2018-08-05 17:01:38 +10:00
|
|
|
this.user.token = this.token
|
2018-12-05 20:43:01 +11:00
|
|
|
|
|
|
|
this.$v.$touch()
|
|
|
|
|
|
|
|
if (!this.$v.$invalid) {
|
|
|
|
this.signUp(this.user)
|
|
|
|
}
|
2017-04-16 02:12:23 +10:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default registration
|