aboutsummaryrefslogtreecommitdiff
path: root/src/modules/users.js
diff options
context:
space:
mode:
authorHJ <spam@hjkos.com>2018-12-06 17:39:38 +0000
committerHJ <spam@hjkos.com>2018-12-06 17:39:38 +0000
commit0cb3c4e0569e24d6f3553ed0edece19a44267917 (patch)
tree663f5315d576d8dd4a6f305df4ce2f64293207e8 /src/modules/users.js
parent3fa9b39150c318972511882239304bc08f6f57ad (diff)
parent8987c3025dea851627af83327913cc17aadaf497 (diff)
Merge branch 'better_errors_on_registration' into 'develop'
Registration form: Client side validation + better display of server validation errors See merge request pleroma/pleroma-fe!399
Diffstat (limited to 'src/modules/users.js')
-rw-r--r--src/modules/users.js47
1 files changed, 45 insertions, 2 deletions
diff --git a/src/modules/users.js b/src/modules/users.js
index 8630ee0d..6d966c3b 100644
--- a/src/modules/users.js
+++ b/src/modules/users.js
@@ -1,6 +1,8 @@
import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'
import { compact, map, each, merge } from 'lodash'
import { set } from 'vue'
+import oauthApi from '../services/new_api/oauth'
+import {humanizeErrors} from './errors'
// TODO: Unify with mergeOrAdd in statuses.js
export const mergeOrAdd = (arr, obj, item) => {
@@ -46,15 +48,28 @@ export const mutations = {
setColor (state, { user: {id}, highlighted }) {
const user = state.usersObject[id]
set(user, 'highlight', highlighted)
+ },
+ signUpPending (state) {
+ state.signUpPending = true
+ state.signUpErrors = []
+ },
+ signUpSuccess (state) {
+ state.signUpPending = false
+ },
+ signUpFailure (state, errors) {
+ state.signUpPending = false
+ state.signUpErrors = errors
}
}
export const defaultState = {
+ loggingIn: false,
lastLoginName: false,
currentUser: false,
- loggingIn: false,
users: [],
- usersObject: {}
+ usersObject: {},
+ signUpPending: false,
+ signUpErrors: []
}
const users = {
@@ -80,6 +95,34 @@ const users = {
store.commit('setUserForStatus', status)
})
},
+ async signUp (store, userInfo) {
+ store.commit('signUpPending')
+
+ let rootState = store.rootState
+
+ let response = await rootState.api.backendInteractor.register(userInfo)
+ if (response.ok) {
+ const data = {
+ oauth: rootState.oauth,
+ instance: rootState.instance.server
+ }
+ let app = await oauthApi.getOrCreateApp(data)
+ let result = await oauthApi.getTokenWithCredentials({
+ app,
+ instance: data.instance,
+ username: userInfo.username,
+ password: userInfo.password
+ })
+ store.commit('signUpSuccess')
+ store.commit('setToken', result.access_token)
+ store.dispatch('loginUser', result.access_token)
+ } else {
+ let data = await response.json()
+ let errors = humanizeErrors(JSON.parse(data.error))
+ store.commit('signUpFailure', errors)
+ throw Error(errors)
+ }
+ },
logout (store) {
store.commit('clearCurrentUser')
store.commit('setToken', false)