diff options
| author | Henry Jameson <me@hjkos.com> | 2018-12-11 01:01:16 +0300 |
|---|---|---|
| committer | Henry Jameson <me@hjkos.com> | 2018-12-11 01:01:16 +0300 |
| commit | 3452864260d8a53afc839fb1265946ebfbd80cee (patch) | |
| tree | 73354d7eb98c73ef2330cb63b73dc127802bd1e4 /src/modules/users.js | |
| parent | aeecd2b09b7c31644a2c601fc1b8d123e2b263b0 (diff) | |
| parent | fb5261b926adfb5b9bbe1bf55e36fe8b5f4eb57f (diff) | |
Merge remote-tracking branch 'upstream/develop' into feature/theming2
* upstream/develop:
Fix color fallback order
Use console.warn instead of console.log
Get rid of mutation_types file, use inline approach. Minor fixes
Add fallback color rule.
Change english validation error messages
Clean up the code
Validate name presence on client-side as well
Better styling for client-side validation. Add I18n for validation errors.
Fix broken ToS link. Fix linter errors
Add client validation for registration form
Use Array.reduce instead of lodash.reduce
Humanize validation errors returned on registration
Added user option to hide instance-specific panel, rearranged config screen to better categorize it / adjustments to language selector
fix
Diffstat (limited to 'src/modules/users.js')
| -rw-r--r-- | src/modules/users.js | 47 |
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) |
