aboutsummaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorHenry Jameson <me@hjkos.com>2019-05-22 19:13:41 +0300
committerHenry Jameson <me@hjkos.com>2019-05-22 19:13:41 +0300
commite7a2a7267dbd8a4ee3d266d22249459d028569d6 (patch)
tree36bf31c489e26ae9adebdca8ee75f49c16688eb0 /src/modules
parent233506f6c1b0b16ca62c557ae6eca4a585e28a2c (diff)
Proper clientId/secret/token caching, MastoAPI registration
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/oauth.js21
-rw-r--r--src/modules/users.js37
2 files changed, 28 insertions, 30 deletions
diff --git a/src/modules/oauth.js b/src/modules/oauth.js
index 144ff830..242e29c3 100644
--- a/src/modules/oauth.js
+++ b/src/modules/oauth.js
@@ -1,17 +1,26 @@
const oauth = {
state: {
- client_id: false,
- client_secret: false,
- token: false
+ clientId: false,
+ clientSecret: false,
+ token: false,
+ clientToken: false
},
mutations: {
- setClientData (state, data) {
- state.client_id = data.client_id
- state.client_secret = data.client_secret
+ setClientData (state, { clientId, clientSecret }) {
+ state.clientId = clientId
+ state.clientSecret = clientSecret
+ },
+ setClientToken (state, token) {
+ state.clientToken = token
},
setToken (state, token) {
state.token = token
}
+ },
+ getters: {
+ getToken: state => () => {
+ return state.token || state.clientToken
+ }
}
}
diff --git a/src/modules/users.js b/src/modules/users.js
index e72a657c..739b8b92 100644
--- a/src/modules/users.js
+++ b/src/modules/users.js
@@ -3,7 +3,6 @@ import userSearchApi from '../services/new_api/user_search.js'
import { compact, map, each, merge, last, concat, uniq } from 'lodash'
import { set } from 'vue'
import { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js'
-import oauthApi from '../services/new_api/oauth'
import { humanizeErrors } from './errors'
// TODO: Unify with mergeOrAdd in statuses.js
@@ -368,31 +367,21 @@ const users = {
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
- })
+ try {
+ let data = await rootState.api.backendInteractor.register(userInfo)
store.commit('signUpSuccess')
- store.commit('setToken', result.access_token)
- store.dispatch('loginUser', result.access_token)
- } else {
- const data = await response.json()
- let errors = JSON.parse(data.error)
+ store.commit('setToken', data.access_token)
+ store.dispatch('loginUser', data.access_token)
+ } catch (e) {
+ let errors = e.message
// replace ap_id with username
- if (errors.ap_id) {
- errors.username = errors.ap_id
- delete errors.ap_id
+ if (typeof errors === 'object') {
+ if (errors.ap_id) {
+ errors.username = errors.ap_id
+ delete errors.ap_id
+ }
+ errors = humanizeErrors(errors)
}
- errors = humanizeErrors(errors)
store.commit('signUpFailure', errors)
throw Error(errors)
}
@@ -406,7 +395,7 @@ const users = {
store.dispatch('disconnectFromChat')
store.commit('setToken', false)
store.dispatch('stopFetching', 'friends')
- store.commit('setBackendInteractor', backendInteractorService())
+ store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))
store.dispatch('stopFetching', 'notifications')
store.commit('clearNotifications')
store.commit('resetStatuses')