@zlooks.cn/password-auth-server 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/.hile-rsc/{build-mtu1gn28-ec03cfb2/client-browser/chunks/chunk-CZF5VGOJ.js → build-mtwz7fk2-a912695b/client-browser/chunks/chunk-XJNPI5IC.js} +22 -70
  2. package/.hile-rsc/{build-mtu1gn28-ec03cfb2/client-browser/src-plugin-page-frame-07c4de56a6-C2WHPDGD.js → build-mtwz7fk2-a912695b/client-browser/src-plugin-page-frame-07c4de56a6-RAI54M3V.js} +1 -1
  3. package/.hile-rsc/{build-mtu1gn28-ec03cfb2/client-browser/src-plugin-password-form-3bd63d69e5-BCAMXKEX.js → build-mtwz7fk2-a912695b/client-browser/src-plugin-password-form-3bd63d69e5-DTURXEQT.js} +236 -115
  4. package/.hile-rsc/{build-mtu1gn28-ec03cfb2/client-ssr/chunks/chunk-RMKQVF3F.js → build-mtwz7fk2-a912695b/client-ssr/chunks/chunk-3ROBWYWF.js} +21 -69
  5. package/.hile-rsc/{build-mtu1gn28-ec03cfb2/client-ssr/src-plugin-page-frame-07c4de56a6-ICZZGKBP.js → build-mtwz7fk2-a912695b/client-ssr/src-plugin-page-frame-07c4de56a6-T2ICVKWU.js} +1 -1
  6. package/.hile-rsc/{build-mtu1gn28-ec03cfb2/client-ssr/src-plugin-password-form-3bd63d69e5-KF6ZLTDT.js → build-mtwz7fk2-a912695b/client-ssr/src-plugin-password-form-3bd63d69e5-7GPQ7P5J.js} +236 -115
  7. package/.hile-rsc/{build-mtu1gn28-ec03cfb2 → build-mtwz7fk2-a912695b}/plugin.json +18 -18
  8. package/.hile-rsc/{build-mtu1gn28-ec03cfb2 → build-mtwz7fk2-a912695b}/server-rsc/index.js +150 -131
  9. package/dist/config/schema.d.ts.map +1 -1
  10. package/dist/config/schema.js +37 -6
  11. package/dist/config/schema.js.map +1 -1
  12. package/dist/messages/auth-extension/begin.msg.js +6 -5
  13. package/dist/messages/auth-extension/begin.msg.js.map +1 -1
  14. package/dist/messages/auth-extension/complete.msg.js +6 -5
  15. package/dist/messages/auth-extension/complete.msg.js.map +1 -1
  16. package/dist/models/begin-authentication.model.d.ts +22 -0
  17. package/dist/models/begin-authentication.model.d.ts.map +1 -0
  18. package/dist/models/begin-authentication.model.js +13 -0
  19. package/dist/models/begin-authentication.model.js.map +1 -0
  20. package/dist/models/complete-authentication.model.d.ts +35 -0
  21. package/dist/models/complete-authentication.model.d.ts.map +1 -0
  22. package/dist/models/complete-authentication.model.js +13 -0
  23. package/dist/models/complete-authentication.model.js.map +1 -0
  24. package/dist/runtime/password-state-store.d.ts.map +1 -1
  25. package/dist/runtime/password-state-store.js +23 -10
  26. package/dist/runtime/password-state-store.js.map +1 -1
  27. package/package.json +26 -25
  28. /package/.hile-rsc/{build-mtu1gn28-ec03cfb2 → build-mtwz7fk2-a912695b}/client-browser/src-plugin-page-frame-07c4de56a6-3F24AYCH.css +0 -0
  29. /package/.hile-rsc/{build-mtu1gn28-ec03cfb2 → build-mtwz7fk2-a912695b}/client-browser/src-plugin-password-form-3bd63d69e5-TRYMJX4F.css +0 -0
  30. /package/.hile-rsc/{build-mtu1gn28-ec03cfb2 → build-mtwz7fk2-a912695b}/styles/4b3193c4f2b317ffed425ccf401342a4bdd6ccfd5f9c42def3315e776f166975.css +0 -0
@@ -53,7 +53,7 @@ import {
53
53
  useState,
54
54
  useSyncExternalStore,
55
55
  useZlooksApp
56
- } from "./chunks/chunk-RMKQVF3F.js";
56
+ } from "./chunks/chunk-3ROBWYWF.js";
57
57
 
58
58
  // ../../node_modules/.pnpm/antd@6.6.1_luxon@3.7.2_moment@2.30.1_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/antd/es/app/App.js
59
59
  init_react();
@@ -1,11 +1,10 @@
1
1
  "use client";
2
2
  import {
3
3
  RscLink,
4
- USER_SESSION_COOKIE,
5
4
  __commonJS,
6
5
  __toCommonJS,
7
6
  __toESM,
8
- browserApiDispatchResponseSchema,
7
+ browserApiPath,
9
8
  browserApiResponseSchema,
10
9
  external_exports,
11
10
  init_react,
@@ -75,7 +74,7 @@ import {
75
74
  useRequest,
76
75
  useRscNavigation,
77
76
  useState
78
- } from "./chunks/chunk-RMKQVF3F.js";
77
+ } from "./chunks/chunk-3ROBWYWF.js";
79
78
 
80
79
  // ../../node_modules/.pnpm/antd@6.6.1_luxon@3.7.2_moment@2.30.1_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/antd/lib/_util/getReactMajorVersionCanDelMe.js
81
80
  var require_getReactMajorVersionCanDelMe = __commonJS({
@@ -120060,54 +120059,13 @@ var USER_EVENT_CATALOG = defineEventCatalog({
120060
120059
  });
120061
120060
 
120062
120061
  // ../user-shared/dist/index.js
120063
- var USER_BROWSER_API_PUBLIC_ROUTES = Object.freeze([
120064
- Object.freeze({
120065
- exact: "/api/auth/methods",
120066
- methods: Object.freeze(["GET"]),
120067
- forwardCookieNames: Object.freeze([])
120068
- }),
120069
- Object.freeze({
120070
- exact: "/api/user/shell",
120071
- methods: Object.freeze(["GET"]),
120072
- forwardCookieNames: Object.freeze([USER_SESSION_COOKIE])
120073
- }),
120074
- Object.freeze({
120075
- exact: "/api/user",
120076
- methods: Object.freeze(["GET", "PATCH"]),
120077
- forwardCookieNames: Object.freeze([USER_SESSION_COOKIE])
120078
- }),
120079
- Object.freeze({
120080
- exact: "/api/user/sessions",
120081
- methods: Object.freeze(["GET"]),
120082
- forwardCookieNames: Object.freeze([USER_SESSION_COOKIE])
120083
- }),
120084
- Object.freeze({
120085
- exact: "/api/auth/transactions",
120086
- methods: Object.freeze(["POST"]),
120087
- forwardCookieNames: Object.freeze([])
120088
- }),
120089
- Object.freeze({
120090
- prefix: "/api/auth/transactions/",
120091
- methods: Object.freeze(["POST"]),
120092
- forwardCookieNames: Object.freeze([])
120093
- }),
120094
- Object.freeze({
120095
- exact: "/api/auth/logout",
120096
- methods: Object.freeze(["POST"]),
120097
- forwardCookieNames: Object.freeze([USER_SESSION_COOKIE])
120098
- }),
120099
- Object.freeze({
120100
- exact: "/api/auth/session/refresh",
120101
- methods: Object.freeze(["POST"]),
120102
- forwardCookieNames: Object.freeze([USER_SESSION_COOKIE])
120103
- }),
120104
- Object.freeze({
120105
- prefix: "/api/user/sessions/",
120106
- methods: Object.freeze(["POST"]),
120107
- forwardCookieNames: Object.freeze([USER_SESSION_COOKIE])
120108
- })
120109
- ]);
120110
120062
  var USER_ACCOUNT_HREF = "/user.account/account";
120063
+ var USER_BROWSER_AUTH_METHODS_PATH = browserApiPath(USER_SERVICE_NAMESPACE, "/api/auth/methods");
120064
+ var USER_BROWSER_AUTH_TRANSACTIONS_PATH = browserApiPath(USER_SERVICE_NAMESPACE, "/api/auth/transactions");
120065
+ var USER_BROWSER_LOGOUT_PATH = browserApiPath(USER_SERVICE_NAMESPACE, "/api/auth/logout");
120066
+ var USER_BROWSER_SESSION_REFRESH_PATH = browserApiPath(USER_SERVICE_NAMESPACE, "/api/auth/session/refresh");
120067
+ var USER_BROWSER_USER_PATH = browserApiPath(USER_SERVICE_NAMESPACE, "/api/user");
120068
+ var USER_BROWSER_USER_SESSIONS_PATH = browserApiPath(USER_SERVICE_NAMESPACE, "/api/user/sessions");
120111
120069
  var USER_BROWSER_API_ERROR_CODES = Object.freeze({
120112
120070
  crossOriginRejected: 1001,
120113
120071
  requestRejected: 1002,
@@ -120153,6 +120111,121 @@ var sessionCookieSchema = external_exports.discriminatedUnion("action", [
120153
120111
  }),
120154
120112
  external_exports.strictObject({ action: external_exports.literal("clear") })
120155
120113
  ]);
120114
+ var sessionTokenSchema = external_exports.string().min(1).max(4096);
120115
+ var authenticationMethodSchema = external_exports.strictObject({
120116
+ id: external_exports.string().regex(/^[a-z][a-z0-9._-]{0,127}$/),
120117
+ label: external_exports.string().trim().min(1).max(80),
120118
+ capabilities: external_exports.strictObject({
120119
+ login: external_exports.boolean(),
120120
+ registration: external_exports.boolean()
120121
+ }),
120122
+ rsc: external_exports.strictObject({
120123
+ pluginId: external_exports.string().regex(/^[a-z][a-z0-9._-]{0,127}$/),
120124
+ slots: external_exports.strictObject({
120125
+ login: absolutePath.optional(),
120126
+ registration: absolutePath.optional()
120127
+ })
120128
+ })
120129
+ }).readonly();
120130
+ var userEmptyRequestSchema = external_exports.strictObject({}).readonly();
120131
+ var userAuthenticationCatalogResponseSchema = external_exports.strictObject({
120132
+ methods: external_exports.array(authenticationMethodSchema).max(64).readonly()
120133
+ }).readonly();
120134
+ var userAuthenticationBeginRequestSchema = external_exports.strictObject({
120135
+ methodId: external_exports.string().regex(/^[a-z][a-z0-9._-]{0,127}$/),
120136
+ intent: external_exports.enum(["login", "registration", "linking", "reauthentication", "recovery"]),
120137
+ loginHint: external_exports.string().trim().min(1).max(320).optional(),
120138
+ requestContext: external_exports.strictObject({ clientKey: external_exports.string().min(16).max(128) })
120139
+ }).readonly();
120140
+ var userAuthenticationBeginResponseSchema = external_exports.discriminatedUnion("status", [
120141
+ external_exports.strictObject({
120142
+ status: external_exports.literal("input-required"),
120143
+ transactionId: external_exports.uuid(),
120144
+ methodId: external_exports.string().regex(/^[a-z][a-z0-9._-]{0,127}$/)
120145
+ }),
120146
+ external_exports.strictObject({
120147
+ status: external_exports.literal("redirect-required"),
120148
+ transactionId: external_exports.uuid(),
120149
+ methodId: external_exports.string().regex(/^[a-z][a-z0-9._-]{0,127}$/),
120150
+ redirectUrl: external_exports.url().max(4096)
120151
+ }),
120152
+ external_exports.strictObject({
120153
+ status: external_exports.literal("pending"),
120154
+ transactionId: external_exports.uuid(),
120155
+ methodId: external_exports.string().regex(/^[a-z][a-z0-9._-]{0,127}$/),
120156
+ retryAfterMs: external_exports.number().int().min(250).max(6e4)
120157
+ })
120158
+ ]).readonly();
120159
+ var userAuthenticationCompleteRequestSchema = external_exports.strictObject({
120160
+ input: external_exports.unknown()
120161
+ }).readonly();
120162
+ var userAuthenticationCompletionResponseSchema = external_exports.discriminatedUnion("status", [
120163
+ external_exports.strictObject({
120164
+ status: external_exports.literal("verified"),
120165
+ session: external_exports.strictObject({ token: sessionTokenSchema, expiresAt: external_exports.iso.datetime({ offset: true }) }),
120166
+ user: external_exports.unknown()
120167
+ }),
120168
+ external_exports.strictObject({ status: external_exports.literal("denied"), code: external_exports.string().min(1).max(128) }),
120169
+ external_exports.strictObject({
120170
+ status: external_exports.literal("pending"),
120171
+ retryAfterMs: external_exports.number().int().min(250).max(6e4)
120172
+ })
120173
+ ]).readonly();
120174
+ var userAccountSchema = external_exports.strictObject({
120175
+ id: external_exports.string().min(1).max(128),
120176
+ displayName: external_exports.string().min(1).max(160).optional(),
120177
+ avatar: external_exports.url({ protocol: /^https?$/ }).max(2048).optional(),
120178
+ homepage: external_exports.url({ protocol: /^https?$/ }).max(2048).optional(),
120179
+ bio: external_exports.string().max(500).optional(),
120180
+ email: external_exports.email().max(320).optional(),
120181
+ emailVerified: external_exports.boolean()
120182
+ }).readonly();
120183
+ var userAccountReadResponseSchema = external_exports.strictObject({ user: userAccountSchema }).readonly();
120184
+ var userAccountUpdateRequestSchema = external_exports.strictObject({ input: external_exports.unknown() }).readonly();
120185
+ var userSessionSchema = external_exports.strictObject({
120186
+ id: external_exports.string().min(1).max(128),
120187
+ createdAt: external_exports.iso.datetime(),
120188
+ lastSeenAt: external_exports.iso.datetime(),
120189
+ expiresAt: external_exports.iso.datetime(),
120190
+ revoked: external_exports.boolean()
120191
+ }).readonly();
120192
+ var userAccountSessionsResponseSchema = external_exports.strictObject({
120193
+ sessions: external_exports.array(userSessionSchema).max(100).readonly()
120194
+ }).readonly();
120195
+ var userSessionRevokeResponseSchema = external_exports.strictObject({ revoked: external_exports.boolean() }).readonly();
120196
+ var userLogoutResponseSchema = external_exports.strictObject({ revoked: external_exports.boolean() }).readonly();
120197
+ var userRefreshSessionResponseSchema = external_exports.strictObject({
120198
+ session: external_exports.strictObject({
120199
+ token: sessionTokenSchema,
120200
+ expiresAt: external_exports.iso.datetime({ offset: true }),
120201
+ user: userAccountSchema
120202
+ })
120203
+ }).readonly();
120204
+ var userEventCatalogResponseSchema = external_exports.strictObject({
120205
+ protocol: external_exports.literal("zlooks.event-catalog"),
120206
+ protocolVersion: external_exports.literal(1),
120207
+ providerId: external_exports.literal("user"),
120208
+ displayName: external_exports.string().min(1).max(160),
120209
+ producer: external_exports.literal(USER_SERVICE_NAMESPACE),
120210
+ contractPackage: external_exports.literal("@zlooks.cn/user-shared"),
120211
+ count: external_exports.literal(5),
120212
+ delivery: external_exports.strictObject({
120213
+ guarantee: external_exports.literal("at-least-once"),
120214
+ deduplicateBy: external_exports.literal("eventId")
120215
+ }),
120216
+ events: external_exports.array(external_exports.strictObject({
120217
+ type: external_exports.string().min(1).max(256),
120218
+ title: external_exports.string().min(1).max(160),
120219
+ description: external_exports.string().min(1).max(1e3),
120220
+ producer: external_exports.literal(USER_SERVICE_NAMESPACE),
120221
+ aggregateType: external_exports.string().min(1).max(128),
120222
+ consumer: external_exports.strictObject({
120223
+ packageName: external_exports.literal("@zlooks.cn/user-shared"),
120224
+ exportName: external_exports.string().min(1).max(128)
120225
+ }),
120226
+ dataSchema: external_exports.record(external_exports.string(), external_exports.unknown())
120227
+ })).length(5).readonly()
120228
+ }).readonly();
120156
120229
  var userCurrentUserRequestSchema = external_exports.strictObject({}).readonly();
120157
120230
  var userPublicProfileSchema = external_exports.strictObject({
120158
120231
  id: external_exports.uuid(),
@@ -120173,7 +120246,9 @@ var userPublicProfilesRequestSchema = external_exports.strictObject({
120173
120246
  userIds: external_exports.array(external_exports.uuid()).min(1).max(100).refine((userIds) => new Set(userIds).size === userIds.length, { message: "User IDs must be unique" }).readonly()
120174
120247
  }).readonly();
120175
120248
  var userPublicProfilesResponseSchema = external_exports.strictObject({
120176
- users: external_exports.array(userPublicProfileSchema).max(100).refine((users) => new Set(users.map((user) => user.id)).size === users.length, { message: "Public user profiles must be unique" }).readonly()
120249
+ users: external_exports.array(userPublicProfileSchema).max(100).refine((users) => new Set(users.map((user) => user.id)).size === users.length, {
120250
+ message: "Public user profiles must be unique"
120251
+ }).readonly()
120177
120252
  }).readonly();
120178
120253
  var userBrowserApiRequestSchema = external_exports.strictObject({
120179
120254
  method: external_exports.enum(["GET", "POST", "PATCH"]),
@@ -120182,24 +120257,6 @@ var userBrowserApiRequestSchema = external_exports.strictObject({
120182
120257
  clientKey: external_exports.string().regex(/^[a-f0-9]{64}$/),
120183
120258
  body: external_exports.unknown().optional()
120184
120259
  }).readonly();
120185
- var userBrowserApiProviderRequestSchema = external_exports.strictObject({
120186
- method: external_exports.enum(["GET", "POST", "PATCH"]),
120187
- path: absolutePath,
120188
- origin: external_exports.string().max(2048).optional(),
120189
- clientKey: external_exports.string().regex(/^[a-f0-9]{64}$/),
120190
- body: external_exports.unknown().optional()
120191
- }).readonly();
120192
- var userBrowserApiProviderResponseSchema = browserApiDispatchResponseSchema.superRefine((response, context) => {
120193
- for (const [index, effect] of (response.cookieEffects ?? []).entries()) {
120194
- if (effect.name === USER_SESSION_COOKIE)
120195
- continue;
120196
- context.addIssue({
120197
- code: "custom",
120198
- message: "User Browser API may only mutate its declared session cookie",
120199
- path: ["cookieEffects", index, "name"]
120200
- });
120201
- }
120202
- }).readonly();
120203
120260
  var userBrowserApiResponseSchema = external_exports.strictObject({
120204
120261
  status: external_exports.number().int().min(200).max(599).refine((status) => status < 300 || status >= 400),
120205
120262
  body: browserApiResponseSchema,
@@ -120227,6 +120284,9 @@ var userCredentialLifecycleEventSchema = external_exports.strictObject({
120227
120284
  var userCredentialLifecycleResponseSchema = external_exports.strictObject({
120228
120285
  acknowledged: external_exports.literal(true)
120229
120286
  }).readonly();
120287
+ function userBrowserTransactionCompletePath(transactionId) {
120288
+ return `${USER_BROWSER_AUTH_TRANSACTIONS_PATH}/${encodeURIComponent(external_exports.string().trim().min(1).max(128).parse(transactionId))}/complete`;
120289
+ }
120230
120290
 
120231
120291
  // src/plugin/password-form.tsx
120232
120292
  var import_antd = __toESM(require_lib48(), 1);
@@ -120289,7 +120349,7 @@ function PasswordForm(props) {
120289
120349
  if (countdown <= 0) return;
120290
120350
  const timer = window.setInterval(() => setCountdown((value) => Math.max(0, value - 1)), 1e3);
120291
120351
  return () => window.clearInterval(timer);
120292
- }, [countdown > 0]);
120352
+ }, [countdown]);
120293
120353
  async function ensureTransaction() {
120294
120354
  if (transactionId) return transactionId;
120295
120355
  const created = await beginTransaction(request, props.intent);
@@ -120304,7 +120364,7 @@ function PasswordForm(props) {
120304
120364
  const requestId = pendingSend.current?.email === email ? pendingSend.current.requestId : crypto.randomUUID();
120305
120365
  pendingSend.current = { email, requestId };
120306
120366
  const challenge = await request(
120307
- `/api/auth/transactions/${encodeURIComponent(currentTransactionId)}/complete`,
120367
+ userBrowserTransactionCompletePath(currentTransactionId),
120308
120368
  {
120309
120369
  method: "POST",
120310
120370
  headers: { "content-type": "application/json" },
@@ -120332,12 +120392,16 @@ function PasswordForm(props) {
120332
120392
  code: values.code,
120333
120393
  ...needsPassword ? { password: values.password } : {}
120334
120394
  } : { action: "password-login", email: values.email, password: values.password };
120335
- await request(`/api/auth/transactions/${encodeURIComponent(currentTransactionId)}/complete`, {
120336
- method: "POST",
120337
- headers: { "content-type": "application/json" },
120338
- credentials: "same-origin",
120339
- body: JSON.stringify({ input })
120340
- }, { errorMessage: "\u6CA1\u6709\u5B8C\u6210\uFF0C\u8BF7\u68C0\u67E5\u8F93\u5165\u540E\u91CD\u8BD5", parse: parseAuthenticationCompletion });
120395
+ await request(
120396
+ userBrowserTransactionCompletePath(currentTransactionId),
120397
+ {
120398
+ method: "POST",
120399
+ headers: { "content-type": "application/json" },
120400
+ credentials: "same-origin",
120401
+ body: JSON.stringify({ input })
120402
+ },
120403
+ { errorMessage: "\u6CA1\u6709\u5B8C\u6210\uFF0C\u8BF7\u68C0\u67E5\u8F93\u5165\u540E\u91CD\u8BD5", parse: parseAuthenticationCompletion }
120404
+ );
120341
120405
  if (props.intent === "registration") {
120342
120406
  navigation.replace(USER_ACCOUNT_HREF);
120343
120407
  return;
@@ -120379,7 +120443,10 @@ function PasswordForm(props) {
120379
120443
  {
120380
120444
  "aria-label": "\u9009\u62E9\u767B\u5F55\u65B9\u5F0F",
120381
120445
  block: true,
120382
- options: [{ label: "\u5BC6\u7801\u767B\u5F55", value: "password" }, { label: "\u9A8C\u8BC1\u7801\u767B\u5F55", value: "code" }],
120446
+ options: [
120447
+ { label: "\u5BC6\u7801\u767B\u5F55", value: "password" },
120448
+ { label: "\u9A8C\u8BC1\u7801\u767B\u5F55", value: "code" }
120449
+ ],
120383
120450
  size: "large",
120384
120451
  value: mode,
120385
120452
  onChange: (value) => {
@@ -120392,7 +120459,18 @@ function PasswordForm(props) {
120392
120459
  }
120393
120460
  }
120394
120461
  ) }) : null,
120395
- /* @__PURE__ */ jsx(import_antd.Form.Item, { label: "\u90AE\u7BB1", name: "email", rules: emailRules, children: /* @__PURE__ */ jsx(import_antd.Input, { autoComplete: "username", disabled: codeSent, inputMode: "email", maxLength: 320, placeholder: "name@example.com", size: "large", type: "email" }) }),
120462
+ /* @__PURE__ */ jsx(import_antd.Form.Item, { label: "\u90AE\u7BB1", name: "email", rules: emailRules, children: /* @__PURE__ */ jsx(
120463
+ import_antd.Input,
120464
+ {
120465
+ autoComplete: "username",
120466
+ disabled: codeSent,
120467
+ inputMode: "email",
120468
+ maxLength: 320,
120469
+ placeholder: "name@example.com",
120470
+ size: "large",
120471
+ type: "email"
120472
+ }
120473
+ ) }),
120396
120474
  codeSent ? /* @__PURE__ */ jsx(
120397
120475
  import_antd.Button,
120398
120476
  {
@@ -120411,7 +120489,29 @@ function PasswordForm(props) {
120411
120489
  }
120412
120490
  ) : null,
120413
120491
  usesCode ? /* @__PURE__ */ jsx(import_antd.Form.Item, { label: "\u9A8C\u8BC1\u7801", required: true, children: /* @__PURE__ */ jsxs("div", { className: password_form_default.codeRow, children: [
120414
- /* @__PURE__ */ jsx(import_antd.Form.Item, { noStyle: true, name: "code", rules: [{ required: true, message: "\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801" }, { len: 6, message: "\u9A8C\u8BC1\u7801\u5E94\u4E3A 6 \u4F4D\u6570\u5B57" }, { pattern: /^\d{6}$/, message: "\u9A8C\u8BC1\u7801\u5E94\u4E3A 6 \u4F4D\u6570\u5B57" }], children: /* @__PURE__ */ jsx(import_antd.Input, { "aria-label": "\u9A8C\u8BC1\u7801", autoComplete: "one-time-code", inputMode: "numeric", maxLength: 6, placeholder: "6 \u4F4D\u9A8C\u8BC1\u7801", size: "large" }) }),
120492
+ /* @__PURE__ */ jsx(
120493
+ import_antd.Form.Item,
120494
+ {
120495
+ noStyle: true,
120496
+ name: "code",
120497
+ rules: [
120498
+ { required: true, message: "\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801" },
120499
+ { len: 6, message: "\u9A8C\u8BC1\u7801\u5E94\u4E3A 6 \u4F4D\u6570\u5B57" },
120500
+ { pattern: /^\d{6}$/, message: "\u9A8C\u8BC1\u7801\u5E94\u4E3A 6 \u4F4D\u6570\u5B57" }
120501
+ ],
120502
+ children: /* @__PURE__ */ jsx(
120503
+ import_antd.Input,
120504
+ {
120505
+ "aria-label": "\u9A8C\u8BC1\u7801",
120506
+ autoComplete: "one-time-code",
120507
+ inputMode: "numeric",
120508
+ maxLength: 6,
120509
+ placeholder: "6 \u4F4D\u9A8C\u8BC1\u7801",
120510
+ size: "large"
120511
+ }
120512
+ )
120513
+ }
120514
+ ),
120415
120515
  /* @__PURE__ */ jsx(import_antd.Button, { disabled: countdown > 0 || submitting, loading: sending, onClick: sendCode, size: "large", children: countdown > 0 ? `${countdown} \u79D2\u540E\u91CD\u53D1` : codeSent ? "\u91CD\u65B0\u53D1\u9001" : "\u53D1\u9001\u9A8C\u8BC1\u7801" })
120416
120516
  ] }) }) : null,
120417
120517
  needsPassword ? /* @__PURE__ */ jsx(
@@ -120432,7 +120532,18 @@ function PasswordForm(props) {
120432
120532
  )
120433
120533
  }
120434
120534
  ) : null,
120435
- /* @__PURE__ */ jsx(import_antd.Button, { block: true, htmlType: "submit", loading: submitting, size: "large", type: "primary", disabled: sending || usesCode && !codeSent, children: copy.submit })
120535
+ /* @__PURE__ */ jsx(
120536
+ import_antd.Button,
120537
+ {
120538
+ block: true,
120539
+ htmlType: "submit",
120540
+ loading: submitting,
120541
+ size: "large",
120542
+ type: "primary",
120543
+ disabled: sending || usesCode && !codeSent,
120544
+ children: copy.submit
120545
+ }
120546
+ )
120436
120547
  ]
120437
120548
  }
120438
120549
  ) }),
@@ -120446,14 +120557,16 @@ function PasswordForm(props) {
120446
120557
  );
120447
120558
  }
120448
120559
  function AlternateLinks({ intent }) {
120449
- if (intent === "registration") return /* @__PURE__ */ jsxs("p", { className: password_form_default.alternate, children: [
120450
- "\u5DF2\u7ECF\u6709\u8D26\u53F7\uFF1F",
120451
- /* @__PURE__ */ jsx(RscLink, { href: "/auth.password/login", children: "\u8FD4\u56DE\u767B\u5F55" })
120452
- ] });
120453
- if (intent === "recovery") return /* @__PURE__ */ jsxs("p", { className: password_form_default.alternate, children: [
120454
- "\u60F3\u8D77\u5BC6\u7801\u4E86\uFF1F",
120455
- /* @__PURE__ */ jsx(RscLink, { href: "/auth.password/login", children: "\u8FD4\u56DE\u767B\u5F55" })
120456
- ] });
120560
+ if (intent === "registration")
120561
+ return /* @__PURE__ */ jsxs("p", { className: password_form_default.alternate, children: [
120562
+ "\u5DF2\u7ECF\u6709\u8D26\u53F7\uFF1F",
120563
+ /* @__PURE__ */ jsx(RscLink, { href: "/auth.password/login", children: "\u8FD4\u56DE\u767B\u5F55" })
120564
+ ] });
120565
+ if (intent === "recovery")
120566
+ return /* @__PURE__ */ jsxs("p", { className: password_form_default.alternate, children: [
120567
+ "\u60F3\u8D77\u5BC6\u7801\u4E86\uFF1F",
120568
+ /* @__PURE__ */ jsx(RscLink, { href: "/auth.password/login", children: "\u8FD4\u56DE\u767B\u5F55" })
120569
+ ] });
120457
120570
  return /* @__PURE__ */ jsxs("div", { className: password_form_default.alternateLinks, children: [
120458
120571
  /* @__PURE__ */ jsxs("p", { children: [
120459
120572
  /* @__PURE__ */ jsx("span", { children: "\u8FD8\u6CA1\u6709\u8D26\u6237\uFF1F" }),
@@ -120466,12 +120579,16 @@ function AlternateLinks({ intent }) {
120466
120579
  ] });
120467
120580
  }
120468
120581
  async function beginTransaction(request, intent) {
120469
- return request("/api/auth/transactions", {
120470
- method: "POST",
120471
- headers: { "content-type": "application/json" },
120472
- credentials: "same-origin",
120473
- body: JSON.stringify({ methodId: "password", intent })
120474
- }, { errorMessage: "\u6682\u65F6\u65E0\u6CD5\u7EE7\u7EED\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5", parse: parseTransactionId });
120582
+ return request(
120583
+ USER_BROWSER_AUTH_TRANSACTIONS_PATH,
120584
+ {
120585
+ method: "POST",
120586
+ headers: { "content-type": "application/json" },
120587
+ credentials: "same-origin",
120588
+ body: JSON.stringify({ methodId: "password", intent })
120589
+ },
120590
+ { errorMessage: "\u6682\u65F6\u65E0\u6CD5\u7EE7\u7EED\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5", parse: parseTransactionId }
120591
+ );
120475
120592
  }
120476
120593
  function parseTransactionId(data) {
120477
120594
  if (data === null || typeof data !== "object" || Array.isArray(data)) throw new Error("Invalid transaction response");
@@ -120489,31 +120606,35 @@ var emailRules = [
120489
120606
  function passwordRules(requireMinimum) {
120490
120607
  return [
120491
120608
  { required: true, message: "\u8BF7\u8F93\u5165\u5BC6\u7801" },
120492
- ...requireMinimum ? [{
120493
- validator: async (_rule, value) => {
120494
- if (!value) return;
120495
- if (Array.from(value).length < 12) throw new Error("\u5BC6\u7801\u81F3\u5C11\u9700\u8981 12 \u4E2A\u5B57\u7B26");
120496
- if (new TextEncoder().encode(value).byteLength > 128) throw new Error("\u5BC6\u7801\u8FC7\u957F\uFF0C\u8BF7\u7F29\u77ED\u540E\u91CD\u8BD5");
120609
+ ...requireMinimum ? [
120610
+ {
120611
+ validator: async (_rule, value) => {
120612
+ if (!value) return;
120613
+ if (Array.from(value).length < 12) throw new Error("\u5BC6\u7801\u81F3\u5C11\u9700\u8981 12 \u4E2A\u5B57\u7B26");
120614
+ if (new TextEncoder().encode(value).byteLength > 128) throw new Error("\u5BC6\u7801\u8FC7\u957F\uFF0C\u8BF7\u7F29\u77ED\u540E\u91CD\u8BD5");
120615
+ }
120497
120616
  }
120498
- }] : [{ max: 128, message: "\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 128 \u4E2A\u5B57\u7B26" }]
120617
+ ] : [{ max: 128, message: "\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 128 \u4E2A\u5B57\u7B26" }]
120499
120618
  ];
120500
120619
  }
120501
120620
  var UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
120502
120621
  function pageCopy(intent) {
120503
- if (intent === "registration") return {
120504
- introduction: "\u9A8C\u8BC1\u90AE\u7BB1\u5E76\u521B\u5EFA\u8D26\u53F7\u540E\uFF0C\u53EF\u4EE5\u7EE7\u7EED\u5B8C\u5584\u8D44\u6599\uFF0C\u6574\u7406\u5C5E\u4E8E\u4F60\u7684\u8BB0\u5F55\u3002",
120505
- step: "ACCOUNT / REGISTER",
120506
- title: "\u521B\u5EFA\u8D26\u6237",
120507
- description: "\u4F7F\u7528\u90AE\u7BB1\u9A8C\u8BC1\u7801\u548C\u5BC6\u7801\u521B\u5EFA\u8D26\u53F7\u3002",
120508
- submit: "\u521B\u5EFA\u8D26\u53F7"
120509
- };
120510
- if (intent === "recovery") return {
120511
- introduction: "\u9A8C\u8BC1\u6CE8\u518C\u90AE\u7BB1\u540E\u8BBE\u7F6E\u65B0\u5BC6\u7801\uFF0C\u65E7\u8BBE\u5907\u4E0A\u7684\u767B\u5F55\u4F1A\u81EA\u52A8\u9000\u51FA\u3002",
120512
- step: "ACCOUNT / RECOVERY",
120513
- title: "\u627E\u56DE\u5BC6\u7801",
120514
- description: "\u9A8C\u8BC1\u7801\u53EA\u4F1A\u53D1\u9001\u5230\u5DF2\u7ECF\u6CE8\u518C\u7684\u90AE\u7BB1\u3002",
120515
- submit: "\u66F4\u65B0\u5BC6\u7801\u5E76\u767B\u5F55"
120516
- };
120622
+ if (intent === "registration")
120623
+ return {
120624
+ introduction: "\u9A8C\u8BC1\u90AE\u7BB1\u5E76\u521B\u5EFA\u8D26\u53F7\u540E\uFF0C\u53EF\u4EE5\u7EE7\u7EED\u5B8C\u5584\u8D44\u6599\uFF0C\u6574\u7406\u5C5E\u4E8E\u4F60\u7684\u8BB0\u5F55\u3002",
120625
+ step: "ACCOUNT / REGISTER",
120626
+ title: "\u521B\u5EFA\u8D26\u6237",
120627
+ description: "\u4F7F\u7528\u90AE\u7BB1\u9A8C\u8BC1\u7801\u548C\u5BC6\u7801\u521B\u5EFA\u8D26\u53F7\u3002",
120628
+ submit: "\u521B\u5EFA\u8D26\u53F7"
120629
+ };
120630
+ if (intent === "recovery")
120631
+ return {
120632
+ introduction: "\u9A8C\u8BC1\u6CE8\u518C\u90AE\u7BB1\u540E\u8BBE\u7F6E\u65B0\u5BC6\u7801\uFF0C\u65E7\u8BBE\u5907\u4E0A\u7684\u767B\u5F55\u4F1A\u81EA\u52A8\u9000\u51FA\u3002",
120633
+ step: "ACCOUNT / RECOVERY",
120634
+ title: "\u627E\u56DE\u5BC6\u7801",
120635
+ description: "\u9A8C\u8BC1\u7801\u53EA\u4F1A\u53D1\u9001\u5230\u5DF2\u7ECF\u6CE8\u518C\u7684\u90AE\u7BB1\u3002",
120636
+ submit: "\u66F4\u65B0\u5BC6\u7801\u5E76\u767B\u5F55"
120637
+ };
120517
120638
  return {
120518
120639
  introduction: "\u767B\u5F55\u540E\u53EF\u4EE5\u7BA1\u7406\u4E2A\u4EBA\u8D44\u6599\u4E0E\u767B\u5F55\u4F1A\u8BDD\u3002",
120519
120640
  step: "ACCOUNT / SIGN IN",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "protocolVersion": 1,
3
3
  "pluginId": "auth.password",
4
- "buildId": "build-mtu1gn28-ec03cfb2",
4
+ "buildId": "build-mtwz7fk2-a912695b",
5
5
  "runtime": {
6
6
  "react": "19.2.8",
7
7
  "reactDom": "19.2.8",
@@ -9,49 +9,49 @@
9
9
  },
10
10
  "server": {
11
11
  "entry": "server-rsc/index.js",
12
- "integrity": "sha256-5RPMLBgOfaSKRYG/v2FgHD3HmAIWZH1HHgOc//z1jUE="
12
+ "integrity": "sha256-4N1XYtF5h8TQank1SE8j5A3QNB1+iuqjpQNNn6+gFBA="
13
13
  },
14
14
  "serverFunctions": [],
15
15
  "clients": [
16
16
  {
17
17
  "id": "auth.password/src/plugin/page-frame#default",
18
- "module": "client-browser/src-plugin-page-frame-07c4de56a6-C2WHPDGD.js",
19
- "ssrModule": "client-ssr/src-plugin-page-frame-07c4de56a6-ICZZGKBP.js",
18
+ "module": "client-browser/src-plugin-page-frame-07c4de56a6-RAI54M3V.js",
19
+ "ssrModule": "client-ssr/src-plugin-page-frame-07c4de56a6-T2ICVKWU.js",
20
20
  "exportName": "default",
21
21
  "chunks": [
22
22
  {
23
- "path": "client-browser/chunks/chunk-CZF5VGOJ.js",
24
- "integrity": "sha256-kTRq6UKg9IvtaOyiYoLZzTMb2YnZHVyz51D/+XyahcM="
23
+ "path": "client-browser/chunks/chunk-XJNPI5IC.js",
24
+ "integrity": "sha256-tPci33JR2aSUPTLbsYMuM2ulEiw3fX1MkKEaqNWqQfw="
25
25
  }
26
26
  ],
27
27
  "ssrChunks": [
28
28
  {
29
- "path": "client-ssr/chunks/chunk-RMKQVF3F.js",
30
- "integrity": "sha256-9mEuRp91q4zeT9AfbPC17MtOxaceAFHFcAqTSwMfIVw="
29
+ "path": "client-ssr/chunks/chunk-3ROBWYWF.js",
30
+ "integrity": "sha256-d8yNX3JQPyHZOhiJHno+WskA3PtcTktCW80UWeeJer4="
31
31
  }
32
32
  ],
33
- "integrity": "sha256-8A5lO2CLER4bDp/+FQb1C1la+qe7/F/YTX1YTRkNP74=",
34
- "ssrIntegrity": "sha256-oXz2/GyunCvb89Z80ZdAAIj7TPsUXAL1YnujIksKzGw="
33
+ "integrity": "sha256-KVD036aCGhJmHqgQPxPCF8mzEUcWUtyoftRW/7IUH6k=",
34
+ "ssrIntegrity": "sha256-uRnmzkQZUpIivY4VIP1Mdj7W6MzSu2YmBnToJdHtdeM="
35
35
  },
36
36
  {
37
37
  "id": "auth.password/src/plugin/password-form#default",
38
- "module": "client-browser/src-plugin-password-form-3bd63d69e5-BCAMXKEX.js",
39
- "ssrModule": "client-ssr/src-plugin-password-form-3bd63d69e5-KF6ZLTDT.js",
38
+ "module": "client-browser/src-plugin-password-form-3bd63d69e5-DTURXEQT.js",
39
+ "ssrModule": "client-ssr/src-plugin-password-form-3bd63d69e5-7GPQ7P5J.js",
40
40
  "exportName": "default",
41
41
  "chunks": [
42
42
  {
43
- "path": "client-browser/chunks/chunk-CZF5VGOJ.js",
44
- "integrity": "sha256-kTRq6UKg9IvtaOyiYoLZzTMb2YnZHVyz51D/+XyahcM="
43
+ "path": "client-browser/chunks/chunk-XJNPI5IC.js",
44
+ "integrity": "sha256-tPci33JR2aSUPTLbsYMuM2ulEiw3fX1MkKEaqNWqQfw="
45
45
  }
46
46
  ],
47
47
  "ssrChunks": [
48
48
  {
49
- "path": "client-ssr/chunks/chunk-RMKQVF3F.js",
50
- "integrity": "sha256-9mEuRp91q4zeT9AfbPC17MtOxaceAFHFcAqTSwMfIVw="
49
+ "path": "client-ssr/chunks/chunk-3ROBWYWF.js",
50
+ "integrity": "sha256-d8yNX3JQPyHZOhiJHno+WskA3PtcTktCW80UWeeJer4="
51
51
  }
52
52
  ],
53
- "integrity": "sha256-6UhHzo7BIH2EfzPm51tsjicq1rueq//QCiL33FTB2S0=",
54
- "ssrIntegrity": "sha256-cfAEB/+Iv3ZqRySrczBN4PcrFdtjearq0G22BlmLIcM="
53
+ "integrity": "sha256-APoZdKAAu1u3ENUPC0yNBDnCAbzt0RK0hvWuOdVy+QM=",
54
+ "ssrIntegrity": "sha256-9iBq5aEebTNQJ1Etanv6FBf5lL1S0J38+zXG0d91AAY="
55
55
  }
56
56
  ],
57
57
  "styles": [