From 07a1d3b9c4752f4086557e2a7e8de245b1958cc8 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Wed, 17 Jun 2026 19:41:37 +0300 Subject: [PATCH] fix login --- src/api/oauth.js | 34 ++++++++++++++++++++-------------- src/api/public.js | 4 ---- src/api/user.js | 1 - src/modules/users.js | 2 +- src/stores/announcements.js | 21 ++++++++++----------- src/stores/oauth.js | 7 +++---- 6 files changed, 34 insertions(+), 35 deletions(-) diff --git a/src/api/oauth.js b/src/api/oauth.js index 2c3c446e5..b547e9c9b 100644 --- a/src/api/oauth.js +++ b/src/api/oauth.js @@ -5,8 +5,9 @@ import { paramsString, promisedRequest } from './helpers.js' import { StatusCodeError } from 'src/services/errors/errors.js' const REDIRECT_URI = `${window.location.origin}/oauth-callback` +const MASTODON_APP_VERIFY_URL = '/api/v1/apps/verify_credentials' -export const createApp = ({ instance }) => { +export const createApp = () => { const formData = new window.FormData() formData.append('client_name', 'PleromaFE') @@ -15,7 +16,7 @@ export const createApp = ({ instance }) => { formData.append('scopes', 'read write follow push admin') return promisedRequest({ - url: `${instance}/api/v1/apps`, + url: '/api/v1/apps', method: 'POST', formData, }).then(({ data, ...rest }) => ({ @@ -28,6 +29,12 @@ export const createApp = ({ instance }) => { })) } +export const verifyAppToken = ({ credentials }) => + promisedRequest({ + url: MASTODON_APP_VERIFY_URL, + credentials, + }) + export const getLoginUrl = ({ instance, clientId }) => { const data = { responseType: 'code', @@ -42,7 +49,6 @@ export const getLoginUrl = ({ instance, clientId }) => { export const getTokenWithCredentials = ({ clientId, clientSecret, - instance, username, password, }) => { @@ -55,13 +61,13 @@ export const getTokenWithCredentials = ({ formData.append('password', password) return promisedRequest({ - url: `${instance}/oauth/token`, + url: '/oauth/token', method: 'POST', formData, }) } -export const getToken = ({ clientId, clientSecret, instance, code }) => { +export const getToken = ({ clientId, clientSecret, code }) => { const formData = new window.FormData() formData.append('client_id', clientId) @@ -71,13 +77,13 @@ export const getToken = ({ clientId, clientSecret, instance, code }) => { formData.append('redirect_uri', `${window.location.origin}/oauth-callback`) return promisedRequest({ - url: `${instance}/oauth/token`, + url: '/oauth/token', method: 'POST', formData, }) } -export const getClientToken = ({ clientId, clientSecret, instance }) => { +export const getClientToken = ({ clientId, clientSecret }) => { const formData = new window.FormData() formData.append('client_id', clientId) @@ -86,13 +92,13 @@ export const getClientToken = ({ clientId, clientSecret, instance }) => { formData.append('redirect_uri', `${window.location.origin}/oauth-callback`) return promisedRequest({ - url: `${instance}/oauth/token`, + url: '/oauth/token', method: 'POST', formData, }) } -export const verifyOTPCode = ({ app, instance, mfaToken, code }) => { +export const verifyOTPCode = ({ app, mfaToken, code }) => { const formData = new window.FormData() formData.append('client_id', app.client_id) @@ -102,13 +108,13 @@ export const verifyOTPCode = ({ app, instance, mfaToken, code }) => { formData.append('challenge_type', 'totp') return promisedRequest({ - url: `${instance}/oauth/mfa/challenge`, + url: '/oauth/mfa/challenge', method: 'POST', formData, }) } -export const verifyRecoveryCode = ({ app, instance, mfaToken, code }) => { +export const verifyRecoveryCode = ({ app, mfaToken, code }) => { const formData = new window.FormData() formData.append('client_id', app.client_id) @@ -118,13 +124,13 @@ export const verifyRecoveryCode = ({ app, instance, mfaToken, code }) => { formData.append('challenge_type', 'recovery') return promisedRequest({ - url: `${instance}/oauth/mfa/challenge`, + url: '/oauth/mfa/challenge', method: 'POST', formData, }) } -export const revokeToken = ({ app, instance, token }) => { +export const revokeToken = ({ app, token }) => { const formData = new window.FormData() formData.append('client_id', app.clientId) @@ -132,7 +138,7 @@ export const revokeToken = ({ app, instance, token }) => { formData.append('token', token) return promisedRequest({ - url: `${instance}/oauth/revoke`, + url: '/oauth/revoke', method: 'POST', formData, }) diff --git a/src/api/public.js b/src/api/public.js index f2fc4e071..a7e73e165 100644 --- a/src/api/public.js +++ b/src/api/public.js @@ -54,7 +54,6 @@ const MASTODON_SEARCH_2 = '/api/v2/search' const MASTODON_USER_SEARCH_URL = '/api/v1/accounts/search' const MASTODON_STREAMING = '/api/v1/streaming' const MASTODON_KNOWN_DOMAIN_LIST_URL = '/api/v1/instance/peers' -const MASTODON_ANNOUNCEMENTS_URL = '/api/v1/announcements' const PLEROMA_EMOJI_REACTIONS_URL = (id) => `/api/v1/pleroma/statuses/${id}/reactions` const PLEROMA_SCROBBLES_URL = (id, { maxId, sinceId, minId, limit, offset }) => @@ -431,9 +430,6 @@ export const search2 = ({ export const fetchKnownDomains = ({ credentials }) => promisedRequest({ url: MASTODON_KNOWN_DOMAIN_LIST_URL, credentials }) -export const getAnnouncements = ({ credentials }) => - promisedRequest({ url: MASTODON_ANNOUNCEMENTS_URL, credentials }) - export const getMastodonSocketURI = ( { credentials, stream, args = {} }, base, diff --git a/src/api/user.js b/src/api/user.js index 5adc53cda..d4811ca4d 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -368,7 +368,6 @@ export const dismissAnnouncement = ({ id, credentials }) => method: 'POST', }) - // #Imports export const importMutes = ({ file, credentials }) => { const formData = new FormData() diff --git a/src/modules/users.js b/src/modules/users.js index d743324b0..d4efec2be 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -18,6 +18,7 @@ import { windowWidth, } from '../services/window_utils/window_utils' +import { useAnnouncementsStore } from 'src/stores/announcements.js' import { useBookmarkFoldersStore } from 'src/stores/bookmark_folders.js' import { useEmojiStore } from 'src/stores/emoji.js' import { useInstanceStore } from 'src/stores/instance.js' @@ -28,7 +29,6 @@ import { useMergedConfigStore } from 'src/stores/merged_config.js' import { useOAuthStore } from 'src/stores/oauth.js' import { useSyncConfigStore } from 'src/stores/sync_config.js' import { useUserHighlightStore } from 'src/stores/user_highlight.js' -import { useAnnouncementsStore } from 'src/stores/announcements.js' import { revokeToken } from 'src/api/oauth.js' import { diff --git a/src/stores/announcements.js b/src/stores/announcements.js index 6339bba52..a5f3e4d8e 100644 --- a/src/stores/announcements.js +++ b/src/stores/announcements.js @@ -2,7 +2,7 @@ import { defineStore } from 'pinia' import { useOAuthStore } from 'src/stores/oauth.js' -import { getAnnouncements, dismissAnnouncement } from 'src/api/user.js' +import { dismissAnnouncement, getAnnouncements } from 'src/api/user.js' const FETCH_ANNOUNCEMENT_INTERVAL_MS = 1000 * 60 * 5 @@ -83,18 +83,17 @@ export const useAnnouncementsStore = defineStore('announcements', { }, markAnnouncementAsRead(id) { return dismissAnnouncement({ - id, - credentials: useOAuthStore().token, - }) - .then(() => { - const index = this.announcements.findIndex((a) => a.id === id) + id, + credentials: useOAuthStore().token, + }).then(() => { + const index = this.announcements.findIndex((a) => a.id === id) - if (index < 0) { - return - } + if (index < 0) { + return + } - this.announcements[index].read = true - }) + this.announcements[index].read = true + }) }, startFetchingAnnouncements() { if (this.fetchAnnouncementsTimer) { diff --git a/src/stores/oauth.js b/src/stores/oauth.js index 55e8e759c..83a7d246a 100644 --- a/src/stores/oauth.js +++ b/src/stores/oauth.js @@ -2,8 +2,7 @@ import { defineStore } from 'pinia' import { useInstanceStore } from 'src/stores/instance.js' -import { createApp, getClientToken } from 'src/api/oauth.js' -import { verifyCredentials } from 'src/api/public.js' +import { createApp, getClientToken, verifyAppToken } from 'src/api/oauth.js' // status codes about verifyAppToken (GET /api/v1/apps/verify_credentials) const isAppTokenRejected = (error) => @@ -39,7 +38,7 @@ export const useOAuthStore = defineStore('oauth', { }), getters: { token() { - return this.userToken || this.appToken + return this.userToken }, }, actions: { @@ -90,7 +89,7 @@ export const useOAuthStore = defineStore('oauth', { async ensureAppToken() { if (this.appToken) { try { - await verifyCredentials({ + await verifyAppToken({ credentials: this.appToken, }) return this.appToken