mirror of
https://codeberg.org/yeentown/barkey.git
synced 2025-07-07 12:36:57 +00:00
fix type errors in auth.vue
This commit is contained in:
parent
126d2119a3
commit
3b9de1c4bb
1 changed files with 15 additions and 8 deletions
|
@ -63,24 +63,30 @@ const getUrlParams = () =>
|
|||
const [k, v] = query.split('=');
|
||||
result[k] = decodeURI(v);
|
||||
return result;
|
||||
}, {});
|
||||
}, {} as Record<string, string>);
|
||||
|
||||
const state = ref<'waiting' | 'accepted' | 'fetch-session-error' | 'denied' | null>(null);
|
||||
const session = ref<Misskey.entities.AuthSessionShowResponse | null>(null);
|
||||
|
||||
function accepted() {
|
||||
state.value = 'accepted';
|
||||
const isMastodon = !!getUrlParams().mastodon;
|
||||
const params = getUrlParams();
|
||||
const isMastodon = !!params.mastodon;
|
||||
if (session.value && session.value.app.callbackUrl && isMastodon) {
|
||||
const redirectUri = decodeURIComponent(getUrlParams().redirect_uri);
|
||||
if (!params.redirect_uri) {
|
||||
throw new Error('Missing redirect_uri');
|
||||
}
|
||||
const redirectUri = decodeURIComponent(params.redirect_uri);
|
||||
if (!session.value.app.callbackUrl.includes('elk.zone') && !session.value.app.callbackUrl.split('\n').includes(redirectUri)) {
|
||||
state.value = 'fetch-session-error';
|
||||
throw new Error('Callback URI doesn\'t match registered app');
|
||||
}
|
||||
const callbackUrl = session.value.app.callbackUrl.includes('elk.zone') ? new URL(session.value.app.callbackUrl) : new URL(redirectUri);
|
||||
callbackUrl.searchParams.append('code', session.value.token);
|
||||
if (getUrlParams().state) callbackUrl.searchParams.append('state', getUrlParams().state);
|
||||
location.href = callbackUrl.toString();
|
||||
if (params.state) {
|
||||
callbackUrl.searchParams.append('state', params.state);
|
||||
}
|
||||
window.location.href = callbackUrl.toString();
|
||||
} else if (session.value && session.value.app.callbackUrl) {
|
||||
const url = new URL(session.value.app.callbackUrl);
|
||||
if (['javascript:', 'file:', 'data:', 'mailto:', 'tel:', 'vbscript:'].includes(url.protocol)) throw new Error('invalid url');
|
||||
|
@ -96,14 +102,15 @@ onMounted(async () => {
|
|||
if (!$i) return;
|
||||
|
||||
try {
|
||||
session.value = await misskeyApi('auth/session/show', {
|
||||
const sess = await misskeyApi('auth/session/show', {
|
||||
token: props.token,
|
||||
});
|
||||
session.value = sess;
|
||||
|
||||
// 既に連携していた場合
|
||||
if (session.value.app.isAuthorized) {
|
||||
if (sess.app.isAuthorized) {
|
||||
await misskeyApi('auth/accept', {
|
||||
token: session.value.token,
|
||||
token: sess.token,
|
||||
});
|
||||
accepted();
|
||||
} else {
|
||||
|
|
Loading…
Add table
Reference in a new issue