2018-12-05 09:43:01 +00:00
|
|
|
import { validationMixin } from 'vuelidate'
|
2018-12-05 15:42:33 +00:00
|
|
|
import { required, sameAs } from 'vuelidate/lib/validators'
|
2018-12-05 09:43:01 +00:00
|
|
|
import { mapActions, mapState } from 'vuex'
|
2018-11-06 20:48:05 +00:00
|
|
|
|
2017-04-15 16:12:23 +00:00
|
|
|
const registration = {
|
2018-12-05 09:43:01 +00:00
|
|
|
mixins: [validationMixin],
|
2017-04-15 16:12:23 +00:00
|
|
|
data: () => ({
|
2018-12-05 09:43:01 +00:00
|
|
|
user: {
|
|
|
|
email: '',
|
2018-12-05 15:42:33 +00:00
|
|
|
fullname: '',
|
2018-12-05 09:43:01 +00:00
|
|
|
username: '',
|
|
|
|
password: '',
|
|
|
|
confirm: ''
|
2018-12-15 00:05:47 +00:00
|
|
|
},
|
|
|
|
captcha: {}
|
2017-04-15 16:12:23 +00:00
|
|
|
}),
|
2018-12-05 09:43:01 +00:00
|
|
|
validations: {
|
|
|
|
user: {
|
2018-12-05 15:42:33 +00:00
|
|
|
email: { required },
|
2018-12-05 09:43:01 +00:00
|
|
|
username: { required },
|
2018-12-05 15:42:33 +00:00
|
|
|
fullname: { required },
|
2018-12-05 09:43:01 +00:00
|
|
|
password: { required },
|
2018-12-05 15:17:29 +00:00
|
|
|
confirm: {
|
|
|
|
required,
|
|
|
|
sameAsPassword: sameAs('password')
|
|
|
|
}
|
2018-12-05 09:43:01 +00:00
|
|
|
}
|
|
|
|
},
|
2017-06-20 07:37:51 +00:00
|
|
|
created () {
|
2018-12-05 15:17:29 +00:00
|
|
|
if ((!this.registrationOpen && !this.token) || this.signedIn) {
|
2017-06-20 07:37:51 +00:00
|
|
|
this.$router.push('/main/all')
|
|
|
|
}
|
2018-12-15 00:05:47 +00:00
|
|
|
|
|
|
|
fetch("/api/pleroma/captcha")
|
|
|
|
.then(resp => resp.json())
|
|
|
|
.then(resp => {
|
|
|
|
// TODO: check for errors
|
|
|
|
this.captcha = resp
|
|
|
|
})
|
2017-06-20 07:37:51 +00:00
|
|
|
},
|
2017-06-19 13:35:35 +00:00
|
|
|
computed: {
|
2018-12-05 09:43:01 +00:00
|
|
|
token () { return this.$route.params.token },
|
|
|
|
...mapState({
|
2018-12-05 15:17:29 +00:00
|
|
|
registrationOpen: (state) => state.instance.registrationOpen,
|
|
|
|
signedIn: (state) => !!state.users.currentUser,
|
2018-12-05 19:07:58 +00:00
|
|
|
isPending: (state) => state.users.signUpPending,
|
|
|
|
serverValidationErrors: (state) => state.users.signUpErrors,
|
2018-12-05 16:19:39 +00:00
|
|
|
termsOfService: (state) => state.instance.tos
|
2018-12-05 09:43:01 +00:00
|
|
|
})
|
2017-06-19 13:35:35 +00:00
|
|
|
},
|
2017-04-15 16:12:23 +00:00
|
|
|
methods: {
|
2018-12-05 09:43:01 +00:00
|
|
|
...mapActions(['signUp']),
|
2018-12-05 15:17:29 +00:00
|
|
|
async submit () {
|
2017-04-15 16:12:23 +00:00
|
|
|
this.user.nickname = this.user.username
|
2018-08-05 07:01:38 +00:00
|
|
|
this.user.token = this.token
|
2018-12-15 00:05:47 +00:00
|
|
|
this.user.captcha_solution = this.captcha.solution;
|
|
|
|
this.user.captcha_token = this.captcha.token;
|
2018-12-05 09:43:01 +00:00
|
|
|
|
|
|
|
this.$v.$touch()
|
|
|
|
|
|
|
|
if (!this.$v.$invalid) {
|
2018-12-05 15:17:29 +00:00
|
|
|
try {
|
|
|
|
await this.signUp(this.user)
|
|
|
|
this.$router.push('/main/friends')
|
|
|
|
} catch (error) {
|
2018-12-05 19:13:08 +00:00
|
|
|
console.warn('Registration failed: ' + error)
|
2018-12-05 15:17:29 +00:00
|
|
|
}
|
2018-12-05 09:43:01 +00:00
|
|
|
}
|
2017-04-15 16:12:23 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default registration
|