feat: クライアントでログインするアカウントidを指定するクエリ(loginId=:userId) (#7929)

* feat: ログインするアカウントのIDをクエリ文字列で指定する機能

* await?

* rename
This commit is contained in:
tamaina 2021-10-31 16:01:50 +09:00 committed by GitHub
parent fc65190ef7
commit 303c5abfb4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 0 deletions

View file

@ -37,6 +37,8 @@ import { isMobile } from '@client/scripts/is-mobile';
import { initializeSw } from '@client/scripts/initialize-sw'; import { initializeSw } from '@client/scripts/initialize-sw';
import { reloadChannel } from '@client/scripts/unison-reload'; import { reloadChannel } from '@client/scripts/unison-reload';
import { reactionPicker } from '@client/scripts/reaction-picker'; import { reactionPicker } from '@client/scripts/reaction-picker';
import { getUrlWithoutLoginId } from '@client/scripts/login-id';
import { getAccountFromId } from '@client/scripts/get-account-from-id';
console.info(`Misskey v${version}`); console.info(`Misskey v${version}`);
@ -116,6 +118,25 @@ const html = document.documentElement;
html.setAttribute('lang', lang); html.setAttribute('lang', lang);
//#endregion //#endregion
//#region loginId
const params = new URLSearchParams(location.search);
const loginId = params.get('loginId');
if (loginId) {
const target = getUrlWithoutLoginId(location.href);
if (!$i || $i.id !== loginId) {
const account = await getAccountFromId(loginId);
if (account) {
await login(account.token, target);
}
}
history.replaceState({ misskey: 'loginId' }, '', target);
}
//#endregion
//#region Fetch user //#region Fetch user
if ($i && $i.token) { if ($i && $i.token) {
if (_DEV_) { if (_DEV_) {

View file

@ -0,0 +1,11 @@
export function getUrlWithLoginId(url: string, loginId: string) {
const u = new URL(url, origin);
u.searchParams.append('loginId', loginId);
return u.toString();
}
export function getUrlWithoutLoginId(url: string) {
const u = new URL(url);
u.searchParams.delete('loginId');
return u.toString();
}