summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzyoshoka <107108195+zyoshoka@users.noreply.github.com>2024-10-03 18:33:56 +0900
committerGitHub <noreply@github.com>2024-10-03 18:33:56 +0900
commit2a4ab0e1878c7e45e939574cb4eb6c23f6371802 (patch)
treea516d87574a18e8d0cd6a6f095fde29bd9f5ee42
parentfeat: サーバー初期設定時に初期パスワードを要求できる... (diff)
downloadsharkey-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.ts12
-rw-r--r--packages/frontend/src/components/MkSignin.vue5
-rw-r--r--packages/misskey-js/etc/misskey-js.api.md37
-rw-r--r--packages/misskey-js/package.json1
-rw-r--r--packages/misskey-js/src/api.types.ts17
-rw-r--r--packages/misskey-js/src/entities.ts18
-rw-r--r--pnpm-lock.yaml3
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