fix callback url

This commit is contained in:
Namekuji 2023-03-24 06:55:23 -04:00
parent 2497c5b4f6
commit 7111b5cbdb

View file

@ -88,8 +88,10 @@ export default defineComponent({
const getUrlParams = () => window.location.search.substring(1).split('&').reduce((result, query) => { const [k, v] = query.split('='); result[k] = decodeURI(v); return result; }, {}); const getUrlParams = () => window.location.search.substring(1).split('&').reduce((result, query) => { const [k, v] = query.split('='); result[k] = decodeURI(v); return result; }, {});
const isMastodon = !!getUrlParams().mastodon const isMastodon = !!getUrlParams().mastodon
if (this.session.app.callbackUrl && isMastodon) { if (this.session.app.callbackUrl && isMastodon) {
const stateParam = !!getUrlParams().state ? `&state=$(getUrlParams().state)` : ''; const callbackUrl = new URL(this.session.app.callbackUrl);
location.href = `${this.session.app.callbackUrl}?code=${this.session.token}${stateParam}`; callbackUrl.searchParams.append("code", this.session.token);
if (!!getUrlParams().state) callbackUrl.searchParams.append("state", getUrlParams().state);
location.href = callbackUrl.toString();
} else if (this.session.app.callbackUrl) { } else if (this.session.app.callbackUrl) {
const url = new URL(this.session.app.callbackUrl); const url = new URL(this.session.app.callbackUrl);
if (['javascript:', 'file:', 'data:', 'mailto:', 'tel:'].includes(url.protocol)) throw new Error('invalid url'); if (['javascript:', 'file:', 'data:', 'mailto:', 'tel:'].includes(url.protocol)) throw new Error('invalid url');