Proper clientId/secret/token caching, MastoAPI registration
This commit is contained in:
parent
233506f6c1
commit
e7a2a7267d
10 changed files with 138 additions and 92 deletions
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue