akkoma-fe/src/components/registration/registration.js

62 lines
1.9 KiB
JavaScript
Raw Normal View History

import oauthApi from '../../services/new_api/oauth.js'
import { humanizeErrors } from '../../modules/errors'
2017-04-15 16:12:23 +00:00
const registration = {
data: () => ({
user: {},
errors: [],
2017-04-15 16:12:23 +00:00
registering: false
}),
created () {
2018-09-09 18:21:23 +00:00
if ((!this.$store.state.instance.registrationOpen && !this.token) || !!this.$store.state.users.currentUser) {
this.$router.push('/main/all')
}
2018-08-05 07:01:38 +00:00
// Seems like this doesn't work at first page open for some reason
2018-09-09 18:21:23 +00:00
if (this.$store.state.instance.registrationOpen && this.token) {
2018-08-05 07:01:38 +00:00
this.$router.push('/registration')
}
},
computed: {
2018-09-09 18:21:23 +00:00
termsofservice () { return this.$store.state.instance.tos },
2018-08-05 07:01:38 +00:00
token () { return this.$route.params.token }
},
2017-04-15 16:12:23 +00:00
methods: {
submit () {
this.registering = true
this.user.nickname = this.user.username
2018-08-05 07:01:38 +00:00
this.user.token = this.token
2017-04-15 16:12:23 +00:00
this.$store.state.api.backendInteractor.register(this.user).then(
(response) => {
if (response.ok) {
const data = {
oauth: this.$store.state.oauth,
instance: this.$store.state.instance.server
}
oauthApi.getOrCreateApp(data).then((app) => {
oauthApi.getTokenWithCredentials(
2018-11-06 20:51:22 +00:00
{
app,
instance: data.instance,
username: this.user.username,
password: this.user.password
})
.then((result) => {
this.$store.commit('setToken', result.access_token)
this.$store.dispatch('loginUser', result.access_token)
this.$router.push('/main/friends')
})
})
2017-04-15 16:12:23 +00:00
} else {
this.registering = false
response.json().then((data) => {
this.errors = humanizeErrors(JSON.parse(data.error))
2017-04-15 16:12:23 +00:00
})
}
},
2017-04-15 16:12:23 +00:00
)
}
}
}
export default registration