From e7a2a7267dbd8a4ee3d266d22249459d028569d6 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Wed, 22 May 2019 19:13:41 +0300 Subject: Proper clientId/secret/token caching, MastoAPI registration --- src/modules/oauth.js | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'src/modules/oauth.js') 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 + } } } -- cgit v1.2.3-70-g09d2 From af75c6d1ea392477c647708dcd0e712c514a1b60 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 13 Jun 2019 00:39:51 +0300 Subject: No longer sending extra data, renamed some properties --- src/boot/after_store.js | 4 ++-- src/components/login_form/login_form.js | 6 ++++-- src/components/oauth_callback/oauth_callback.js | 4 +++- src/modules/oauth.js | 10 +++++----- 4 files changed, 14 insertions(+), 10 deletions(-) (limited to 'src/modules/oauth.js') diff --git a/src/boot/after_store.js b/src/boot/after_store.js index caaede59..4bcd1fb5 100644 --- a/src/boot/after_store.js +++ b/src/boot/after_store.js @@ -246,9 +246,9 @@ const setConfig = async ({ store }) => { const checkOAuthToken = async ({ store }) => { return new Promise(async (resolve, reject) => { - if (store.state.oauth.token) { + if (store.state.oauth.userToken) { try { - await store.dispatch('loginUser', store.state.oauth.token) + await store.dispatch('loginUser', store.state.oauth.userToken) } catch (e) { console.log(e) } diff --git a/src/components/login_form/login_form.js b/src/components/login_form/login_form.js index 0097e18a..7d49fade 100644 --- a/src/components/login_form/login_form.js +++ b/src/components/login_form/login_form.js @@ -11,8 +11,9 @@ const LoginForm = { }, methods: { oAuthLogin () { + const { clientId } = this.$store.state.oauth const data = { - ...this.$store.state.oauth, + clientId, instance: this.$store.state.instance.server, commit: this.$store.commit } @@ -21,8 +22,9 @@ const LoginForm = { .then((app) => { oauthApi.login({ ...app, ...data }) }) }, submit () { + const { clientId } = this.$store.state.oauth const data = { - ...this.$store.state.oauth, + clientId, instance: this.$store.state.instance.server, commit: this.$store.commit } diff --git a/src/components/oauth_callback/oauth_callback.js b/src/components/oauth_callback/oauth_callback.js index 48ddd10d..2c6ca235 100644 --- a/src/components/oauth_callback/oauth_callback.js +++ b/src/components/oauth_callback/oauth_callback.js @@ -4,8 +4,10 @@ const oac = { props: ['code'], mounted () { if (this.code) { + const { clientId } = this.$store.state.oauth + oauth.getToken({ - ...this.$store.state.oauth, + clientId, instance: this.$store.state.instance.server, code: this.code }).then((result) => { diff --git a/src/modules/oauth.js b/src/modules/oauth.js index 242e29c3..4b233b21 100644 --- a/src/modules/oauth.js +++ b/src/modules/oauth.js @@ -2,8 +2,8 @@ const oauth = { state: { clientId: false, clientSecret: false, - token: false, - clientToken: false + appToken: false, + userToken: false }, mutations: { setClientData (state, { clientId, clientSecret }) { @@ -11,15 +11,15 @@ const oauth = { state.clientSecret = clientSecret }, setClientToken (state, token) { - state.clientToken = token + state.appToken = token }, setToken (state, token) { - state.token = token + state.userToken = token } }, getters: { getToken: state => () => { - return state.token || state.clientToken + return state.userToken || state.appToken } } } -- cgit v1.2.3-70-g09d2 From 6cd454687390947ccc7be02d03d5da008ab2607b Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 13 Jun 2019 00:44:25 +0300 Subject: comments --- src/modules/oauth.js | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/modules/oauth.js') diff --git a/src/modules/oauth.js b/src/modules/oauth.js index 4b233b21..332b8db2 100644 --- a/src/modules/oauth.js +++ b/src/modules/oauth.js @@ -2,7 +2,14 @@ const oauth = { state: { clientId: false, clientSecret: false, + /* App token is authentication for app without any user, used mostly for + * MastoAPI's registration of new users, stored so that we can fall back to + * it on logout + */ appToken: false, + /* User token is authentication for app with user, this is for every calls + * that need authorized user to be successful (i.e. posting, liking etc) + */ userToken: false }, mutations: { -- cgit v1.2.3-70-g09d2 From d551b398597b419e579fd90c2750efb4ed3c9593 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 13 Jun 2019 09:48:43 +0300 Subject: fix logged out post-update --- src/modules/oauth.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/modules/oauth.js') diff --git a/src/modules/oauth.js b/src/modules/oauth.js index 332b8db2..77ad2fa8 100644 --- a/src/modules/oauth.js +++ b/src/modules/oauth.js @@ -26,7 +26,9 @@ const oauth = { }, getters: { getToken: state => () => { - return state.userToken || state.appToken + // state.token is userToken with older name, coming from persistent state + // added here for smoother transition, otherwise user will be logged out + return state.userToken || state.token || state.appToken } } } -- cgit v1.2.3-70-g09d2 From dba8d8910cd390d059dfa0827156fa350ed1108c Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 13 Jun 2019 10:00:06 +0300 Subject: fix --- src/boot/after_store.js | 2 +- src/modules/oauth.js | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src/modules/oauth.js') diff --git a/src/boot/after_store.js b/src/boot/after_store.js index 3530c3a9..77a5e976 100644 --- a/src/boot/after_store.js +++ b/src/boot/after_store.js @@ -248,7 +248,7 @@ const checkOAuthToken = async ({ store }) => { return new Promise(async (resolve, reject) => { if (store.state.oauth.userToken) { try { - await store.dispatch('loginUser', store.state.oauth.userToken) + await store.dispatch('loginUser', store.getters.getUserToken()) } catch (e) { console.log(e) } diff --git a/src/modules/oauth.js b/src/modules/oauth.js index 77ad2fa8..c87e4777 100644 --- a/src/modules/oauth.js +++ b/src/modules/oauth.js @@ -29,6 +29,11 @@ const oauth = { // state.token is userToken with older name, coming from persistent state // added here for smoother transition, otherwise user will be logged out return state.userToken || state.token || state.appToken + }, + getUserToken: state => () => { + // state.token is userToken with older name, coming from persistent state + // added here for smoother transition, otherwise user will be logged out + return state.userToken || state.token } } } -- cgit v1.2.3-70-g09d2 From acbeea59ff196c16e7992c80e56a638ce3a623b6 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 13 Jun 2019 10:11:17 +0300 Subject: rename mutations according to actual property names --- src/boot/after_store.js | 2 +- src/modules/oauth.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/modules/oauth.js') diff --git a/src/boot/after_store.js b/src/boot/after_store.js index 7661dbe6..c271d413 100644 --- a/src/boot/after_store.js +++ b/src/boot/after_store.js @@ -196,7 +196,7 @@ const getAppSecret = async ({ store }) => { return getOrCreateApp({ ...oauth, instance: instance.server, commit }) .then((app) => getClientToken({ ...app, instance: instance.server })) .then((token) => { - commit('setClientToken', token.access_token) + commit('setAppToken', token.access_token) commit('setBackendInteractor', backendInteractorService(store.getters.getToken())) }) } diff --git a/src/modules/oauth.js b/src/modules/oauth.js index c87e4777..11cb10fe 100644 --- a/src/modules/oauth.js +++ b/src/modules/oauth.js @@ -17,7 +17,7 @@ const oauth = { state.clientId = clientId state.clientSecret = clientSecret }, - setClientToken (state, token) { + setAppToken (state, token) { state.appToken = token }, setToken (state, token) { -- cgit v1.2.3-70-g09d2 From 268e9ce5042cc89707204153b64f04f1c1b9e0e0 Mon Sep 17 00:00:00 2001 From: taehoon Date: Wed, 19 Jun 2019 23:11:39 -0400 Subject: make sure to clear old token when logout --- src/lib/persisted_state.js | 3 ++- src/modules/oauth.js | 4 ++++ src/modules/users.js | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) (limited to 'src/modules/oauth.js') diff --git a/src/lib/persisted_state.js b/src/lib/persisted_state.js index 7ab89c12..cad7ea25 100644 --- a/src/lib/persisted_state.js +++ b/src/lib/persisted_state.js @@ -19,7 +19,8 @@ const saveImmedeatelyActions = [ 'setHighlight', 'setOption', 'setClientData', - 'setToken' + 'setToken', + 'clearToken' ] const defaultStorage = (() => { diff --git a/src/modules/oauth.js b/src/modules/oauth.js index 11cb10fe..b7755b64 100644 --- a/src/modules/oauth.js +++ b/src/modules/oauth.js @@ -22,6 +22,10 @@ const oauth = { }, setToken (state, token) { state.userToken = token + }, + clearToken (state) { + state.userToken = false + state.token = false } }, getters: { diff --git a/src/modules/users.js b/src/modules/users.js index 22340271..1e0b16f5 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -399,7 +399,7 @@ const users = { logout (store) { store.commit('clearCurrentUser') store.dispatch('disconnectFromChat') - store.commit('setToken', false) + store.commit('clearToken') store.dispatch('stopFetching', 'friends') store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken())) store.dispatch('stopFetching', 'notifications') -- cgit v1.2.3-70-g09d2 From bd377148ade7aaf26652dc14ee77683b7e6c8c5a Mon Sep 17 00:00:00 2001 From: taehoon Date: Thu, 20 Jun 2019 11:47:33 -0400 Subject: delete state.token instead of setting false --- src/modules/oauth.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/modules/oauth.js') diff --git a/src/modules/oauth.js b/src/modules/oauth.js index b7755b64..a2a83450 100644 --- a/src/modules/oauth.js +++ b/src/modules/oauth.js @@ -1,3 +1,5 @@ +import { delete as del } from 'vue' + const oauth = { state: { clientId: false, @@ -25,7 +27,9 @@ const oauth = { }, clearToken (state) { state.userToken = false - state.token = false + // state.token is userToken with older name, coming from persistent state + // let's clear it as well, since it is being used as a fallback of state.userToken + del(state, 'token') } }, getters: { -- cgit v1.2.3-70-g09d2