diff options
| author | zyoshoka <107108195+zyoshoka@users.noreply.github.com> | 2024-10-03 18:33:56 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-03 18:33:56 +0900 |
| commit | 2a4ab0e1878c7e45e939574cb4eb6c23f6371802 (patch) | |
| tree | a516d87574a18e8d0cd6a6f095fde29bd9f5ee42 | |
| parent | feat: サーバー初期設定時に初期パスワードを要求できる... (diff) | |
| download | sharkey-2a4ab0e1878c7e45e939574cb4eb6c23f6371802.tar.gz sharkey-2a4ab0e1878c7e45e939574cb4eb6c23f6371802.tar.bz2 sharkey-2a4ab0e1878c7e45e939574cb4eb6c23f6371802.zip | |
fix(misskey-js): type fixes related to signup and signin (#14679)
| -rw-r--r-- | packages/backend/src/server/api/ApiServerService.ts | 12 | ||||
| -rw-r--r-- | packages/frontend/src/components/MkSignin.vue | 5 | ||||
| -rw-r--r-- | packages/misskey-js/etc/misskey-js.api.md | 37 | ||||
| -rw-r--r-- | packages/misskey-js/package.json | 1 | ||||
| -rw-r--r-- | packages/misskey-js/src/api.types.ts | 17 | ||||
| -rw-r--r-- | packages/misskey-js/src/entities.ts | 18 | ||||
| -rw-r--r-- | pnpm-lock.yaml | 3 |
7 files changed, 73 insertions, 20 deletions
diff --git a/packages/backend/src/server/api/ApiServerService.ts b/packages/backend/src/server/api/ApiServerService.ts index 709a044601..356e145681 100644 --- a/packages/backend/src/server/api/ApiServerService.ts +++ b/packages/backend/src/server/api/ApiServerService.ts @@ -118,6 +118,7 @@ export class ApiServerService { 'hcaptcha-response'?: string; 'g-recaptcha-response'?: string; 'turnstile-response'?: string; + 'm-captcha-response'?: string; } }>('/signup', (request, reply) => this.signupApiService.signup(request, reply)); @@ -126,17 +127,18 @@ export class ApiServerService { username: string; password: string; token?: string; - signature?: string; - authenticatorData?: string; - clientDataJSON?: string; - credentialId?: string; - challengeId?: string; + credential?: AuthenticationResponseJSON; + 'hcaptcha-response'?: string; + 'g-recaptcha-response'?: string; + 'turnstile-response'?: string; + 'm-captcha-response'?: string; }; }>('/signin', (request, reply) => this.signinApiService.signin(request, reply)); fastify.post<{ Body: { credential?: AuthenticationResponseJSON; + context?: string; }; }>('/signin-with-passkey', (request, reply) => this.signinWithPasskeyApiService.signin(request, reply)); diff --git a/packages/frontend/src/components/MkSignin.vue b/packages/frontend/src/components/MkSignin.vue index 8ebdac0220..abbff8e1f2 100644 --- a/packages/frontend/src/components/MkSignin.vue +++ b/packages/frontend/src/components/MkSignin.vue @@ -76,7 +76,6 @@ import { computed, defineAsyncComponent, ref } from 'vue'; import { toUnicode } from 'punycode/'; import * as Misskey from 'misskey-js'; import { supported as webAuthnSupported, get as webAuthnRequest, parseRequestOptionsFromJSON } from '@github/webauthn-json/browser-ponyfill'; -import { SigninWithPasskeyResponse } from 'misskey-js/entities.js'; import { query, extractDomain } from '@@/js/url.js'; import { host as configHost } from '@@/js/config.js'; import MkDivider from './MkDivider.vue'; @@ -188,7 +187,7 @@ function onPasskeyLogin(): void { signing.value = true; if (webAuthnSupported()) { misskeyApi('signin-with-passkey', {}) - .then((res: SigninWithPasskeyResponse) => { + .then(res => { totpLogin.value = false; signing.value = false; queryingKey.value = true; @@ -219,7 +218,7 @@ async function queryPasskey(): Promise<void> { credential: credential.toJSON(), context: passkey_context.value, }); - }).then((res: SigninWithPasskeyResponse) => { + }).then(res => { emit('login', res.signinResponse); return onLogin(res.signinResponse); }); diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md index a5f12b41f4..5f4792eb74 100644 --- a/packages/misskey-js/etc/misskey-js.api.md +++ b/packages/misskey-js/etc/misskey-js.api.md @@ -4,7 +4,9 @@ ```ts +import type { AuthenticationResponseJSON } from '@simplewebauthn/types'; import { EventEmitter } from 'eventemitter3'; +import type { PublicKeyCredentialRequestOptionsJSON } from '@simplewebauthn/types'; // Warning: (ae-forgotten-export) The symbol "components" needs to be exported by the entry point index.d.ts // @@ -1162,7 +1164,19 @@ export type Endpoints = Overwrite<Endpoints_2, { }; 'signin-with-passkey': { req: SigninWithPasskeyRequest; - res: SigninWithPasskeyResponse; + res: { + $switch: { + $cases: [ + [ + { + context: string; + }, + SigninWithPasskeyResponse + ] + ]; + $default: SigninWithPasskeyInitResponse; + }; + }; }; 'admin/roles/create': { req: Overwrite<AdminRolesCreateRequest, { @@ -1196,6 +1210,7 @@ declare namespace entities { SignupPendingResponse, SigninRequest, SigninWithPasskeyRequest, + SigninWithPasskeyInitResponse, SigninWithPasskeyResponse, SigninResponse, PartialRolePolicyOverride, @@ -3027,6 +3042,11 @@ type SigninRequest = { username: string; password: string; token?: string; + credential?: AuthenticationResponseJSON; + 'hcaptcha-response'?: string | null; + 'g-recaptcha-response'?: string | null; + 'turnstile-response'?: string | null; + 'm-captcha-response'?: string | null; }; // @public (undocumented) @@ -3036,16 +3056,20 @@ type SigninResponse = { }; // @public (undocumented) +type SigninWithPasskeyInitResponse = { + option: PublicKeyCredentialRequestOptionsJSON; + context: string; +}; + +// @public (undocumented) type SigninWithPasskeyRequest = { - credential?: object; + credential?: AuthenticationResponseJSON; context?: string; }; // @public (undocumented) type SigninWithPasskeyResponse = { - option?: object; - context?: string; - signinResponse?: SigninResponse; + signinResponse: SigninResponse; }; // @public (undocumented) @@ -3069,6 +3093,7 @@ type SignupRequest = { 'hcaptcha-response'?: string | null; 'g-recaptcha-response'?: string | null; 'turnstile-response'?: string | null; + 'm-captcha-response'?: string | null; }; // @public (undocumented) @@ -3346,7 +3371,7 @@ type UsersUpdateMemoRequest = operations['users___update-memo']['requestBody'][' // Warnings were encountered during analysis: // -// src/entities.ts:49:2 - (ae-forgotten-export) The symbol "ModerationLogPayloads" needs to be exported by the entry point index.d.ts +// src/entities.ts:50:2 - (ae-forgotten-export) The symbol "ModerationLogPayloads" needs to be exported by the entry point index.d.ts // src/streaming.types.ts:220:4 - (ae-forgotten-export) The symbol "ReversiUpdateKey" needs to be exported by the entry point index.d.ts // src/streaming.types.ts:230:4 - (ae-forgotten-export) The symbol "ReversiUpdateSettings" needs to be exported by the entry point index.d.ts diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index b41f0057a3..badc4f64ff 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -57,6 +57,7 @@ "built" ], "dependencies": { + "@simplewebauthn/types": "10.0.0", "eventemitter3": "5.0.1", "reconnecting-websocket": "4.4.0" } diff --git a/packages/misskey-js/src/api.types.ts b/packages/misskey-js/src/api.types.ts index 4c3f2e1578..cef5ab8861 100644 --- a/packages/misskey-js/src/api.types.ts +++ b/packages/misskey-js/src/api.types.ts @@ -5,6 +5,7 @@ import { PartialRolePolicyOverride, SigninRequest, SigninResponse, + SigninWithPasskeyInitResponse, SigninWithPasskeyRequest, SigninWithPasskeyResponse, SignupPendingRequest, @@ -86,8 +87,20 @@ export type Endpoints = Overwrite< }, 'signin-with-passkey': { req: SigninWithPasskeyRequest; - res: SigninWithPasskeyResponse; - } + res: { + $switch: { + $cases: [ + [ + { + context: string; + }, + SigninWithPasskeyResponse, + ], + ]; + $default: SigninWithPasskeyInitResponse; + }, + }, + }, 'admin/roles/create': { req: Overwrite<AdminRolesCreateRequest, { policies: PartialRolePolicyOverride }>; res: AdminRolesCreateResponse; diff --git a/packages/misskey-js/src/entities.ts b/packages/misskey-js/src/entities.ts index 64ed90cbb1..36b7f5bca3 100644 --- a/packages/misskey-js/src/entities.ts +++ b/packages/misskey-js/src/entities.ts @@ -10,6 +10,7 @@ import { User, UserDetailedNotMe, } from './autogen/models.js'; +import type { AuthenticationResponseJSON, PublicKeyCredentialRequestOptionsJSON } from '@simplewebauthn/types'; export * from './autogen/entities.js'; export * from './autogen/models.js'; @@ -250,6 +251,7 @@ export type SignupRequest = { 'hcaptcha-response'?: string | null; 'g-recaptcha-response'?: string | null; 'turnstile-response'?: string | null; + 'm-captcha-response'?: string | null; } export type SignupResponse = MeDetailed & { @@ -269,17 +271,25 @@ export type SigninRequest = { username: string; password: string; token?: string; + credential?: AuthenticationResponseJSON; + 'hcaptcha-response'?: string | null; + 'g-recaptcha-response'?: string | null; + 'turnstile-response'?: string | null; + 'm-captcha-response'?: string | null; }; export type SigninWithPasskeyRequest = { - credential?: object; + credential?: AuthenticationResponseJSON; context?: string; }; +export type SigninWithPasskeyInitResponse = { + option: PublicKeyCredentialRequestOptionsJSON; + context: string; +}; + export type SigninWithPasskeyResponse = { - option?: object; - context?: string; - signinResponse?: SigninResponse; + signinResponse: SigninResponse; }; export type SigninResponse = { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5d7febbcc9..53d5dbbde0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1289,6 +1289,9 @@ importers: packages/misskey-js: dependencies: + '@simplewebauthn/types': + specifier: 10.0.0 + version: 10.0.0 eventemitter3: specifier: 5.0.1 version: 5.0.1 |