sa2kit 2.0.1 → 2.0.2

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 (264) hide show
  1. package/README.md +1 -1
  2. package/dist/CollisionBalls-BpHufX3H.d.mts +41 -0
  3. package/dist/CollisionBalls-BpHufX3H.d.ts +41 -0
  4. package/dist/ConfigService-BxK06xP6.d.mts +262 -0
  5. package/dist/ConfigService-BxK06xP6.d.ts +262 -0
  6. package/dist/UniversalFileService-BpvbZitV.d.mts +139 -0
  7. package/dist/UniversalFileService-GsP6D3Rc.d.ts +139 -0
  8. package/dist/audioDetection/index.d.mts +449 -0
  9. package/dist/audioDetection/index.d.ts +449 -0
  10. package/dist/audioDetection/index.js +1244 -0
  11. package/dist/audioDetection/index.js.map +1 -0
  12. package/dist/audioDetection/index.mjs +1227 -0
  13. package/dist/audioDetection/index.mjs.map +1 -0
  14. package/dist/auth/legacy/core/index.d.mts +42 -0
  15. package/dist/auth/legacy/core/index.d.ts +42 -0
  16. package/dist/auth/legacy/core/index.js +242 -0
  17. package/dist/auth/legacy/core/index.js.map +1 -0
  18. package/dist/auth/legacy/core/index.mjs +226 -0
  19. package/dist/auth/legacy/core/index.mjs.map +1 -0
  20. package/dist/auth/legacy/db/index.d.mts +5 -0
  21. package/dist/auth/legacy/db/index.d.ts +5 -0
  22. package/dist/auth/legacy/db/index.js +261 -0
  23. package/dist/auth/legacy/db/index.js.map +1 -0
  24. package/dist/auth/legacy/db/index.mjs +250 -0
  25. package/dist/auth/legacy/db/index.mjs.map +1 -0
  26. package/dist/auth/legacy/index.d.mts +5 -0
  27. package/dist/auth/legacy/index.d.ts +5 -0
  28. package/dist/auth/legacy/index.js +1107 -0
  29. package/dist/auth/legacy/index.js.map +1 -0
  30. package/dist/auth/legacy/index.mjs +1086 -0
  31. package/dist/auth/legacy/index.mjs.map +1 -0
  32. package/dist/auth/legacy/logic/index.d.mts +9 -0
  33. package/dist/auth/legacy/logic/index.d.ts +9 -0
  34. package/dist/auth/legacy/logic/index.js +194 -0
  35. package/dist/auth/legacy/logic/index.js.map +1 -0
  36. package/dist/auth/legacy/logic/index.mjs +187 -0
  37. package/dist/auth/legacy/logic/index.mjs.map +1 -0
  38. package/dist/auth/legacy/miniapp/index.d.mts +5 -0
  39. package/dist/auth/legacy/miniapp/index.d.ts +5 -0
  40. package/dist/auth/legacy/miniapp/index.js +506 -0
  41. package/dist/auth/legacy/miniapp/index.js.map +1 -0
  42. package/dist/auth/legacy/miniapp/index.mjs +487 -0
  43. package/dist/auth/legacy/miniapp/index.mjs.map +1 -0
  44. package/dist/auth/legacy/routes/index.d.mts +53 -0
  45. package/dist/auth/legacy/routes/index.d.ts +53 -0
  46. package/dist/auth/legacy/routes/index.js +278 -0
  47. package/dist/auth/legacy/routes/index.js.map +1 -0
  48. package/dist/auth/legacy/routes/index.mjs +271 -0
  49. package/dist/auth/legacy/routes/index.mjs.map +1 -0
  50. package/dist/auth/legacy/schema/index.d.mts +401 -0
  51. package/dist/auth/legacy/schema/index.d.ts +401 -0
  52. package/dist/auth/legacy/schema/index.js +50 -0
  53. package/dist/auth/legacy/schema/index.js.map +1 -0
  54. package/dist/auth/legacy/schema/index.mjs +44 -0
  55. package/dist/auth/legacy/schema/index.mjs.map +1 -0
  56. package/dist/auth/legacy/server/index.d.mts +13 -0
  57. package/dist/auth/legacy/server/index.d.ts +13 -0
  58. package/dist/auth/legacy/server/index.js +21 -0
  59. package/dist/auth/legacy/server/index.js.map +1 -0
  60. package/dist/auth/legacy/server/index.mjs +19 -0
  61. package/dist/auth/legacy/server/index.mjs.map +1 -0
  62. package/dist/auth/legacy/services/index.d.mts +40 -0
  63. package/dist/auth/legacy/services/index.d.ts +40 -0
  64. package/dist/auth/legacy/services/index.js +258 -0
  65. package/dist/auth/legacy/services/index.js.map +1 -0
  66. package/dist/auth/legacy/services/index.mjs +252 -0
  67. package/dist/auth/legacy/services/index.mjs.map +1 -0
  68. package/dist/auth/legacy/ui/miniapp/index.d.mts +10 -0
  69. package/dist/auth/legacy/ui/miniapp/index.d.ts +10 -0
  70. package/dist/auth/legacy/ui/miniapp/index.js +298 -0
  71. package/dist/auth/legacy/ui/miniapp/index.js.map +1 -0
  72. package/dist/auth/legacy/ui/miniapp/index.mjs +290 -0
  73. package/dist/auth/legacy/ui/miniapp/index.mjs.map +1 -0
  74. package/dist/auth/legacy/ui/web/index.d.mts +22 -0
  75. package/dist/auth/legacy/ui/web/index.d.ts +22 -0
  76. package/dist/auth/legacy/ui/web/index.js +899 -0
  77. package/dist/auth/legacy/ui/web/index.js.map +1 -0
  78. package/dist/auth/legacy/ui/web/index.mjs +889 -0
  79. package/dist/auth/legacy/ui/web/index.mjs.map +1 -0
  80. package/dist/auth/legacy/web/index.d.mts +5 -0
  81. package/dist/auth/legacy/web/index.d.ts +5 -0
  82. package/dist/auth/legacy/web/index.js +1107 -0
  83. package/dist/auth/legacy/web/index.js.map +1 -0
  84. package/dist/auth/legacy/web/index.mjs +1086 -0
  85. package/dist/auth/legacy/web/index.mjs.map +1 -0
  86. package/dist/auth/rn/index.d.mts +64 -0
  87. package/dist/auth/rn/index.d.ts +64 -0
  88. package/dist/auth/rn/index.js +765 -0
  89. package/dist/auth/rn/index.js.map +1 -0
  90. package/dist/auth/rn/index.mjs +754 -0
  91. package/dist/auth/rn/index.mjs.map +1 -0
  92. package/dist/base-api-client-ACKKt13v.d.mts +277 -0
  93. package/dist/base-api-client-ACKKt13v.d.ts +277 -0
  94. package/dist/boothVaultService-Cn4WPhjg.d.mts +83 -0
  95. package/dist/boothVaultService-Cn4WPhjg.d.ts +83 -0
  96. package/dist/business/index.d.mts +6 -0
  97. package/dist/business/index.d.ts +6 -0
  98. package/dist/business/index.js +1682 -0
  99. package/dist/business/index.js.map +1 -0
  100. package/dist/business/index.mjs +1675 -0
  101. package/dist/business/index.mjs.map +1 -0
  102. package/dist/calendar/index.d.mts +1325 -0
  103. package/dist/calendar/index.d.ts +1325 -0
  104. package/dist/calendar/index.js +5964 -0
  105. package/dist/calendar/index.js.map +1 -0
  106. package/dist/calendar/index.mjs +5878 -0
  107. package/dist/calendar/index.mjs.map +1 -0
  108. package/dist/components/index.d.mts +405 -0
  109. package/dist/components/index.d.ts +405 -0
  110. package/dist/components/index.js +2516 -0
  111. package/dist/components/index.js.map +1 -0
  112. package/dist/components/index.mjs +2396 -0
  113. package/dist/components/index.mjs.map +1 -0
  114. package/dist/drizzle-schema-BNhqj2AZ.d.mts +1114 -0
  115. package/dist/drizzle-schema-BNhqj2AZ.d.ts +1114 -0
  116. package/dist/festivalCard/index.d.mts +75 -0
  117. package/dist/festivalCard/index.d.ts +75 -0
  118. package/dist/festivalCard/index.js +1492 -0
  119. package/dist/festivalCard/index.js.map +1 -0
  120. package/dist/festivalCard/index.mjs +1475 -0
  121. package/dist/festivalCard/index.mjs.map +1 -0
  122. package/dist/festivalCard/server/index.d.mts +120 -0
  123. package/dist/festivalCard/server/index.d.ts +120 -0
  124. package/dist/festivalCard/server/index.js +272 -0
  125. package/dist/festivalCard/server/index.js.map +1 -0
  126. package/dist/festivalCard/server/index.mjs +265 -0
  127. package/dist/festivalCard/server/index.mjs.map +1 -0
  128. package/dist/festivalCardService-CZomuQ4E.d.mts +80 -0
  129. package/dist/festivalCardService-CZomuQ4E.d.ts +80 -0
  130. package/dist/index-1Ag7IBXN.d.ts +144 -0
  131. package/dist/index-DNKZ7-R_.d.mts +184 -0
  132. package/dist/index-DNKZ7-R_.d.ts +184 -0
  133. package/dist/index-DSel44Ke.d.mts +93 -0
  134. package/dist/index-DSel44Ke.d.ts +93 -0
  135. package/dist/index-DdeZSeTJ.d.mts +144 -0
  136. package/dist/index-DrPcMJPc.d.mts +250 -0
  137. package/dist/index-DrPcMJPc.d.ts +250 -0
  138. package/dist/index.d.mts +5333 -0
  139. package/dist/index.d.ts +5333 -0
  140. package/dist/index.js +18809 -0
  141. package/dist/index.js.map +1 -0
  142. package/dist/index.mjs +18533 -0
  143. package/dist/index.mjs.map +1 -0
  144. package/dist/mikuContest/ui/web/index.d.mts +2 -0
  145. package/dist/mikuContest/ui/web/index.d.ts +2 -0
  146. package/dist/mikuContest/ui/web/index.js +353 -0
  147. package/dist/mikuContest/ui/web/index.js.map +1 -0
  148. package/dist/mikuContest/ui/web/index.mjs +343 -0
  149. package/dist/mikuContest/ui/web/index.mjs.map +1 -0
  150. package/dist/mikuFireworks3D/index.d.mts +268 -0
  151. package/dist/mikuFireworks3D/index.d.ts +268 -0
  152. package/dist/mikuFireworks3D/index.js +1267 -0
  153. package/dist/mikuFireworks3D/index.js.map +1 -0
  154. package/dist/mikuFireworks3D/index.mjs +1228 -0
  155. package/dist/mikuFireworks3D/index.mjs.map +1 -0
  156. package/dist/mikuFusionGame/index.d.mts +117 -0
  157. package/dist/mikuFusionGame/index.d.ts +117 -0
  158. package/dist/mikuFusionGame/index.js +1208 -0
  159. package/dist/mikuFusionGame/index.js.map +1 -0
  160. package/dist/mikuFusionGame/index.mjs +1195 -0
  161. package/dist/mikuFusionGame/index.mjs.map +1 -0
  162. package/dist/mmd/admin/index.d.mts +487 -0
  163. package/dist/mmd/admin/index.d.ts +487 -0
  164. package/dist/mmd/admin/index.js +1058 -0
  165. package/dist/mmd/admin/index.js.map +1 -0
  166. package/dist/mmd/admin/index.mjs +1027 -0
  167. package/dist/mmd/admin/index.mjs.map +1 -0
  168. package/dist/mmd/index.d.mts +2467 -0
  169. package/dist/mmd/index.d.ts +2467 -0
  170. package/dist/mmd/index.js +10119 -0
  171. package/dist/mmd/index.js.map +1 -0
  172. package/dist/mmd/index.mjs +10028 -0
  173. package/dist/mmd/index.mjs.map +1 -0
  174. package/dist/mmd/server/index.d.mts +139 -0
  175. package/dist/mmd/server/index.d.ts +139 -0
  176. package/dist/mmd/server/index.js +424 -0
  177. package/dist/mmd/server/index.js.map +1 -0
  178. package/dist/mmd/server/index.mjs +404 -0
  179. package/dist/mmd/server/index.mjs.map +1 -0
  180. package/dist/music/index.d.mts +74 -0
  181. package/dist/music/index.d.ts +74 -0
  182. package/dist/music/index.js +830 -0
  183. package/dist/music/index.js.map +1 -0
  184. package/dist/music/index.mjs +809 -0
  185. package/dist/music/index.mjs.map +1 -0
  186. package/dist/music/server/index.d.mts +1 -0
  187. package/dist/music/server/index.d.ts +1 -0
  188. package/dist/music/server/index.js +194 -0
  189. package/dist/music/server/index.js.map +1 -0
  190. package/dist/music/server/index.mjs +182 -0
  191. package/dist/music/server/index.mjs.map +1 -0
  192. package/dist/navigation/index.d.mts +93 -0
  193. package/dist/navigation/index.d.ts +93 -0
  194. package/dist/navigation/index.js +453 -0
  195. package/dist/navigation/index.js.map +1 -0
  196. package/dist/navigation/index.mjs +443 -0
  197. package/dist/navigation/index.mjs.map +1 -0
  198. package/dist/portfolio/index.d.mts +66 -0
  199. package/dist/portfolio/index.d.ts +66 -0
  200. package/dist/portfolio/index.js +736 -0
  201. package/dist/portfolio/index.js.map +1 -0
  202. package/dist/portfolio/index.mjs +724 -0
  203. package/dist/portfolio/index.mjs.map +1 -0
  204. package/dist/qqbot/server/index.d.mts +216 -0
  205. package/dist/qqbot/server/index.d.ts +216 -0
  206. package/dist/qqbot/server/index.js +394 -0
  207. package/dist/qqbot/server/index.js.map +1 -0
  208. package/dist/qqbot/server/index.mjs +385 -0
  209. package/dist/qqbot/server/index.mjs.map +1 -0
  210. package/dist/qqbot/ui/web/index.d.mts +10 -0
  211. package/dist/qqbot/ui/web/index.d.ts +10 -0
  212. package/dist/qqbot/ui/web/index.js +105 -0
  213. package/dist/qqbot/ui/web/index.js.map +1 -0
  214. package/dist/qqbot/ui/web/index.mjs +99 -0
  215. package/dist/qqbot/ui/web/index.mjs.map +1 -0
  216. package/dist/screenReceiver/index.d.mts +86 -0
  217. package/dist/screenReceiver/index.d.ts +86 -0
  218. package/dist/screenReceiver/index.js +281 -0
  219. package/dist/screenReceiver/index.js.map +1 -0
  220. package/dist/screenReceiver/index.mjs +273 -0
  221. package/dist/screenReceiver/index.mjs.map +1 -0
  222. package/dist/testYourself/admin/index.d.mts +58 -0
  223. package/dist/testYourself/admin/index.d.ts +58 -0
  224. package/dist/testYourself/admin/index.js +1009 -0
  225. package/dist/testYourself/admin/index.js.map +1 -0
  226. package/dist/testYourself/admin/index.mjs +1002 -0
  227. package/dist/testYourself/admin/index.mjs.map +1 -0
  228. package/dist/testYourself/index.d.mts +53 -0
  229. package/dist/testYourself/index.d.ts +53 -0
  230. package/dist/testYourself/index.js +2551 -0
  231. package/dist/testYourself/index.js.map +1 -0
  232. package/dist/testYourself/index.mjs +2531 -0
  233. package/dist/testYourself/index.mjs.map +1 -0
  234. package/dist/testYourself/server/index.d.mts +1029 -0
  235. package/dist/testYourself/server/index.d.ts +1029 -0
  236. package/dist/testYourself/server/index.js +825 -0
  237. package/dist/testYourself/server/index.js.map +1 -0
  238. package/dist/testYourself/server/index.mjs +816 -0
  239. package/dist/testYourself/server/index.mjs.map +1 -0
  240. package/dist/types-BTiaMsBz.d.mts +292 -0
  241. package/dist/types-DyG3ZV9V.d.mts +270 -0
  242. package/dist/types-DyG3ZV9V.d.ts +270 -0
  243. package/dist/types-ERmJyjx8.d.ts +292 -0
  244. package/dist/types-HorDyIRv.d.mts +303 -0
  245. package/dist/types-HorDyIRv.d.ts +303 -0
  246. package/dist/vocaloidBooth/index.d.mts +64 -0
  247. package/dist/vocaloidBooth/index.d.ts +64 -0
  248. package/dist/vocaloidBooth/index.js +376 -0
  249. package/dist/vocaloidBooth/index.js.map +1 -0
  250. package/dist/vocaloidBooth/index.mjs +362 -0
  251. package/dist/vocaloidBooth/index.mjs.map +1 -0
  252. package/dist/vocaloidBooth/server/index.d.mts +111 -0
  253. package/dist/vocaloidBooth/server/index.d.ts +111 -0
  254. package/dist/vocaloidBooth/server/index.js +247 -0
  255. package/dist/vocaloidBooth/server/index.js.map +1 -0
  256. package/dist/vocaloidBooth/server/index.mjs +237 -0
  257. package/dist/vocaloidBooth/server/index.mjs.map +1 -0
  258. package/dist/vocaloidBooth/web/index.d.mts +3 -0
  259. package/dist/vocaloidBooth/web/index.d.ts +3 -0
  260. package/dist/vocaloidBooth/web/index.js +376 -0
  261. package/dist/vocaloidBooth/web/index.js.map +1 -0
  262. package/dist/vocaloidBooth/web/index.mjs +362 -0
  263. package/dist/vocaloidBooth/web/index.mjs.map +1 -0
  264. package/package.json +1 -1
@@ -0,0 +1,53 @@
1
+ import { NextRequest, NextResponse } from 'next/server';
2
+ import { LegacyAuthDbService } from '../services/index.js';
3
+ import '../schema/index.js';
4
+ import 'drizzle-orm';
5
+ import 'drizzle-orm/pg-core';
6
+ import '../../../index-DNKZ7-R_.js';
7
+
8
+ interface LegacyCookieOptions {
9
+ name?: string;
10
+ httpOnly?: boolean;
11
+ secure?: boolean;
12
+ sameSite?: 'lax' | 'strict' | 'none';
13
+ maxAge?: number;
14
+ path?: string;
15
+ }
16
+ interface LegacyBaseRouteConfig {
17
+ authService: LegacyAuthDbService;
18
+ cookieOptions?: LegacyCookieOptions;
19
+ }
20
+ interface LegacyLoginRouteConfig extends LegacyBaseRouteConfig {
21
+ }
22
+ interface LegacyRegisterRouteConfig extends LegacyBaseRouteConfig {
23
+ }
24
+ interface LegacyLogoutRouteConfig extends LegacyBaseRouteConfig {
25
+ }
26
+ interface LegacyValidateRouteConfig extends LegacyBaseRouteConfig {
27
+ }
28
+ interface LegacySendVerificationCodeConfig extends LegacyBaseRouteConfig {
29
+ }
30
+ interface LegacyResetPasswordConfig extends LegacyBaseRouteConfig {
31
+ }
32
+ interface LegacyApiResponse<T = any> {
33
+ success: boolean;
34
+ message?: string;
35
+ user?: any;
36
+ sessionToken?: string;
37
+ valid?: boolean;
38
+ data?: T;
39
+ }
40
+
41
+ declare function createLegacyLoginHandler(config: LegacyLoginRouteConfig): (request: NextRequest) => Promise<NextResponse<LegacyApiResponse<any>>>;
42
+
43
+ declare function createLegacyRegisterHandler(config: LegacyRegisterRouteConfig): (request: NextRequest) => Promise<NextResponse<LegacyApiResponse<any>>>;
44
+
45
+ declare function createLegacyLogoutHandler(config: LegacyLogoutRouteConfig): (request: NextRequest) => Promise<NextResponse<LegacyApiResponse<any>>>;
46
+
47
+ declare function createLegacyValidateHandler(config: LegacyValidateRouteConfig): (request: NextRequest) => Promise<NextResponse<LegacyApiResponse<any>>>;
48
+
49
+ declare function createLegacySendVerificationCodeHandler(config: LegacySendVerificationCodeConfig): (request: NextRequest) => Promise<NextResponse<LegacyApiResponse<any>>>;
50
+
51
+ declare function createLegacyResetPasswordHandler(config: LegacyResetPasswordConfig): (request: NextRequest) => Promise<NextResponse<LegacyApiResponse<any>>>;
52
+
53
+ export { type LegacyApiResponse, type LegacyCookieOptions, type LegacyLoginRouteConfig, type LegacyLogoutRouteConfig, type LegacyRegisterRouteConfig, type LegacyResetPasswordConfig, type LegacySendVerificationCodeConfig, type LegacyValidateRouteConfig, createLegacyLoginHandler, createLegacyLogoutHandler, createLegacyRegisterHandler, createLegacyResetPasswordHandler, createLegacySendVerificationCodeHandler, createLegacyValidateHandler };
@@ -0,0 +1,278 @@
1
+ 'use strict';
2
+
3
+ var server = require('next/server');
4
+
5
+ // src/business/auth-legacy/routes/login.ts
6
+
7
+ // src/business/auth-legacy/utils/authUtils.ts
8
+ function validatePhoneNumber(phone) {
9
+ return /^1[3-9]\d{9}$/.test(phone);
10
+ }
11
+ function validatePassword(password) {
12
+ if (!password) {
13
+ return { valid: false, message: "\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A" };
14
+ }
15
+ if (password.length < 6) {
16
+ return { valid: false, message: "\u5BC6\u7801\u957F\u5EA6\u81F3\u5C116\u4F4D" };
17
+ }
18
+ return { valid: true };
19
+ }
20
+
21
+ // src/business/auth-legacy/routes/login.ts
22
+ function createLegacyLoginHandler(config) {
23
+ return async (request) => {
24
+ try {
25
+ const { phone, password } = await request.json();
26
+ if (!phone || !password) {
27
+ return server.NextResponse.json(
28
+ { success: false, message: "\u8BF7\u8F93\u5165\u624B\u673A\u53F7\u548C\u5BC6\u7801" },
29
+ { status: 400 }
30
+ );
31
+ }
32
+ if (!validatePhoneNumber(phone)) {
33
+ return server.NextResponse.json(
34
+ { success: false, message: "\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u683C\u5F0F" },
35
+ { status: 400 }
36
+ );
37
+ }
38
+ const passwordValidation = validatePassword(password);
39
+ if (!passwordValidation.valid) {
40
+ return server.NextResponse.json(
41
+ { success: false, message: passwordValidation.message || "\u5BC6\u7801\u683C\u5F0F\u9519\u8BEF" },
42
+ { status: 400 }
43
+ );
44
+ }
45
+ const user = await config.authService.verifyPassword(phone, password);
46
+ if (!user) {
47
+ return server.NextResponse.json(
48
+ { success: false, message: "\u624B\u673A\u53F7\u6216\u5BC6\u7801\u9519\u8BEF" },
49
+ { status: 401 }
50
+ );
51
+ }
52
+ const session = await config.authService.createSession(user.id);
53
+ await config.authService.updateLastLogin(user.id);
54
+ const response = server.NextResponse.json({
55
+ success: true,
56
+ message: "\u767B\u5F55\u6210\u529F",
57
+ user,
58
+ sessionToken: session.sessionToken,
59
+ data: { user, sessionToken: session.sessionToken }
60
+ });
61
+ const cookieOptions = {
62
+ name: config.cookieOptions?.name || "session_token",
63
+ httpOnly: config.cookieOptions?.httpOnly !== false,
64
+ secure: config.cookieOptions?.secure || false,
65
+ sameSite: config.cookieOptions?.sameSite || "lax",
66
+ maxAge: config.cookieOptions?.maxAge || 30 * 24 * 60 * 60,
67
+ path: config.cookieOptions?.path || "/"
68
+ };
69
+ response.cookies.set(cookieOptions.name, session.sessionToken, {
70
+ httpOnly: cookieOptions.httpOnly,
71
+ secure: cookieOptions.secure,
72
+ sameSite: cookieOptions.sameSite,
73
+ maxAge: cookieOptions.maxAge,
74
+ path: cookieOptions.path
75
+ });
76
+ return response;
77
+ } catch (error) {
78
+ console.error("\u{1F4A5} [LegacyLogin] \u767B\u5F55\u5F02\u5E38:", error);
79
+ return server.NextResponse.json(
80
+ { success: false, message: "\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" },
81
+ { status: 500 }
82
+ );
83
+ }
84
+ };
85
+ }
86
+ function createLegacyRegisterHandler(config) {
87
+ return async (request) => {
88
+ try {
89
+ const { phone, password, name } = await request.json();
90
+ if (!phone || !password) {
91
+ return server.NextResponse.json(
92
+ { success: false, message: "\u8BF7\u8F93\u5165\u624B\u673A\u53F7\u548C\u5BC6\u7801" },
93
+ { status: 400 }
94
+ );
95
+ }
96
+ if (!validatePhoneNumber(phone)) {
97
+ return server.NextResponse.json(
98
+ { success: false, message: "\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u683C\u5F0F" },
99
+ { status: 400 }
100
+ );
101
+ }
102
+ const passwordValidation = validatePassword(password);
103
+ if (!passwordValidation.valid) {
104
+ return server.NextResponse.json(
105
+ { success: false, message: passwordValidation.message || "\u5BC6\u7801\u683C\u5F0F\u9519\u8BEF" },
106
+ { status: 400 }
107
+ );
108
+ }
109
+ const user = await config.authService.createUser(phone, password, name);
110
+ const session = await config.authService.createSession(user.id);
111
+ await config.authService.updateLastLogin(user.id);
112
+ const response = server.NextResponse.json({
113
+ success: true,
114
+ message: "\u6CE8\u518C\u6210\u529F",
115
+ user,
116
+ sessionToken: session.sessionToken,
117
+ data: { user, sessionToken: session.sessionToken }
118
+ });
119
+ const cookieOptions = {
120
+ name: config.cookieOptions?.name || "session_token",
121
+ httpOnly: config.cookieOptions?.httpOnly !== false,
122
+ secure: config.cookieOptions?.secure || false,
123
+ sameSite: config.cookieOptions?.sameSite || "lax",
124
+ maxAge: config.cookieOptions?.maxAge || 30 * 24 * 60 * 60,
125
+ path: config.cookieOptions?.path || "/"
126
+ };
127
+ response.cookies.set(cookieOptions.name, session.sessionToken, {
128
+ httpOnly: cookieOptions.httpOnly,
129
+ secure: cookieOptions.secure,
130
+ sameSite: cookieOptions.sameSite,
131
+ maxAge: cookieOptions.maxAge,
132
+ path: cookieOptions.path
133
+ });
134
+ return response;
135
+ } catch (error) {
136
+ console.error("\u{1F4A5} [LegacyRegister] \u6CE8\u518C\u5F02\u5E38:", error);
137
+ return server.NextResponse.json(
138
+ { success: false, message: "\u6CE8\u518C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" },
139
+ { status: 500 }
140
+ );
141
+ }
142
+ };
143
+ }
144
+ function createLegacyLogoutHandler(config) {
145
+ return async (request) => {
146
+ try {
147
+ const cookieName = config.cookieOptions?.name || "session_token";
148
+ const sessionToken = request.cookies.get(cookieName)?.value;
149
+ if (sessionToken) {
150
+ await config.authService.deleteSession(sessionToken);
151
+ }
152
+ const response = server.NextResponse.json({
153
+ success: true,
154
+ message: "\u767B\u51FA\u6210\u529F"
155
+ });
156
+ response.cookies.set(cookieName, "", {
157
+ httpOnly: true,
158
+ secure: config.cookieOptions?.secure || false,
159
+ sameSite: config.cookieOptions?.sameSite || "lax",
160
+ maxAge: 0,
161
+ path: config.cookieOptions?.path || "/"
162
+ });
163
+ return response;
164
+ } catch (error) {
165
+ console.error("\u{1F4A5} [LegacyLogout] \u767B\u51FA\u5F02\u5E38:", error);
166
+ return server.NextResponse.json(
167
+ { success: false, message: "\u767B\u51FA\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" },
168
+ { status: 500 }
169
+ );
170
+ }
171
+ };
172
+ }
173
+ function createLegacyValidateHandler(config) {
174
+ return async (request) => {
175
+ try {
176
+ const cookieName = config.cookieOptions?.name || "session_token";
177
+ const sessionToken = request.cookies.get(cookieName)?.value;
178
+ if (!sessionToken) {
179
+ return server.NextResponse.json(
180
+ { success: true, valid: false, user: null, data: { valid: false, user: null } },
181
+ { status: 200 }
182
+ );
183
+ }
184
+ const validation = await config.authService.validateSession(sessionToken);
185
+ return server.NextResponse.json({
186
+ success: true,
187
+ valid: validation.valid,
188
+ user: validation.user,
189
+ message: validation.valid ? "\u4F1A\u8BDD\u6709\u6548" : "\u4F1A\u8BDD\u65E0\u6548",
190
+ data: validation
191
+ });
192
+ } catch (error) {
193
+ console.error("\u{1F4A5} [LegacyValidate] \u9A8C\u8BC1\u5F02\u5E38:", error);
194
+ return server.NextResponse.json(
195
+ { success: false, message: "\u9A8C\u8BC1\u5931\u8D25" },
196
+ { status: 500 }
197
+ );
198
+ }
199
+ };
200
+ }
201
+ function createLegacySendVerificationCodeHandler(config) {
202
+ return async (request) => {
203
+ try {
204
+ const { phone } = await request.json();
205
+ if (!validatePhoneNumber(phone)) {
206
+ return server.NextResponse.json(
207
+ { success: false, message: "\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u683C\u5F0F" },
208
+ { status: 400 }
209
+ );
210
+ }
211
+ const user = await config.authService.getUserByPhone(phone);
212
+ if (!user) {
213
+ return server.NextResponse.json(
214
+ { success: false, message: "\u8BE5\u624B\u673A\u53F7\u672A\u6CE8\u518C" },
215
+ { status: 404 }
216
+ );
217
+ }
218
+ await config.authService.sendVerificationCode(phone);
219
+ return server.NextResponse.json({
220
+ success: true,
221
+ message: "\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001"
222
+ });
223
+ } catch (error) {
224
+ console.error("\u{1F4A5} [LegacySendVerificationCode] \u53D1\u9001\u5F02\u5E38:", error);
225
+ return server.NextResponse.json(
226
+ { success: false, message: "\u53D1\u9001\u9A8C\u8BC1\u7801\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" },
227
+ { status: 500 }
228
+ );
229
+ }
230
+ };
231
+ }
232
+ function createLegacyResetPasswordHandler(config) {
233
+ return async (request) => {
234
+ try {
235
+ const { phone, newPassword, verificationCode } = await request.json();
236
+ if (!validatePhoneNumber(phone)) {
237
+ return server.NextResponse.json(
238
+ { success: false, message: "\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u683C\u5F0F" },
239
+ { status: 400 }
240
+ );
241
+ }
242
+ const passwordValidation = validatePassword(newPassword);
243
+ if (!passwordValidation.valid) {
244
+ return server.NextResponse.json(
245
+ { success: false, message: passwordValidation.message || "\u5BC6\u7801\u683C\u5F0F\u9519\u8BEF" },
246
+ { status: 400 }
247
+ );
248
+ }
249
+ const isValidCode = await config.authService.verifyCode(phone, verificationCode);
250
+ if (!isValidCode) {
251
+ return server.NextResponse.json(
252
+ { success: false, message: "\u9A8C\u8BC1\u7801\u65E0\u6548\u6216\u5DF2\u8FC7\u671F" },
253
+ { status: 400 }
254
+ );
255
+ }
256
+ await config.authService.resetPassword(phone, newPassword);
257
+ return server.NextResponse.json({
258
+ success: true,
259
+ message: "\u5BC6\u7801\u91CD\u7F6E\u6210\u529F"
260
+ });
261
+ } catch (error) {
262
+ console.error("\u{1F4A5} [LegacyResetPassword] \u91CD\u7F6E\u5F02\u5E38:", error);
263
+ return server.NextResponse.json(
264
+ { success: false, message: "\u91CD\u7F6E\u5BC6\u7801\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" },
265
+ { status: 500 }
266
+ );
267
+ }
268
+ };
269
+ }
270
+
271
+ exports.createLegacyLoginHandler = createLegacyLoginHandler;
272
+ exports.createLegacyLogoutHandler = createLegacyLogoutHandler;
273
+ exports.createLegacyRegisterHandler = createLegacyRegisterHandler;
274
+ exports.createLegacyResetPasswordHandler = createLegacyResetPasswordHandler;
275
+ exports.createLegacySendVerificationCodeHandler = createLegacySendVerificationCodeHandler;
276
+ exports.createLegacyValidateHandler = createLegacyValidateHandler;
277
+ //# sourceMappingURL=index.js.map
278
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/business/auth-legacy/utils/authUtils.ts","../../../../src/business/auth-legacy/routes/login.ts","../../../../src/business/auth-legacy/routes/register.ts","../../../../src/business/auth-legacy/routes/logout.ts","../../../../src/business/auth-legacy/routes/validate.ts","../../../../src/business/auth-legacy/routes/sendVerificationCode.ts","../../../../src/business/auth-legacy/routes/resetPassword.ts"],"names":["NextResponse"],"mappings":"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","file":"index.js","sourcesContent":["import type { User } from '../types';\n\n/**\n * 验证手机号格式\n */\nexport function validatePhoneNumber(phone: string): boolean {\n return /^1[3-9]\\d{9}$/.test(phone);\n}\n\n/**\n * 验证密码强度(可扩展)\n */\nexport function validatePassword(password: string): { valid: boolean; message?: string } {\n if (!password) {\n return { valid: false, message: '密码不能为空' };\n }\n \n if (password.length < 6) {\n return { valid: false, message: '密码长度至少6位' };\n }\n \n return { valid: true };\n}\n\n/**\n * 生成安全的会话令牌\n */\nexport function generateSessionToken(): string {\n // 在实际环境中,应该使用更安全的随机数生成\n return Math.random().toString(36).substring(2) + \n Date.now().toString(36) + \n Math.random().toString(36).substring(2);\n}\n\n/**\n * 检查用户是否为管理员\n */\nexport function isAdmin(user: User | null): boolean {\n return user?.role === 'admin';\n}\n\n/**\n * 检查用户是否处于活跃状态\n */\nexport function isActiveUser(user: User | null): boolean {\n return user?.isActive === true;\n}\n\n/**\n * 格式化用户显示名称\n */\nexport function getUserDisplayName(user: User): string {\n return user.name || user.phone || '未知用户';\n}\n\n/**\n * 计算会话过期时间\n */\nexport function calculateSessionExpiry(days: number = 30): Date {\n return new Date(Date.now() + days * 24 * 60 * 60 * 1000);\n}\n\n/**\n * 检查会话是否过期\n */\nexport function isSessionExpired(expiresAt: Date): boolean {\n return new Date() > new Date(expiresAt);\n} ","import { NextRequest, NextResponse } from 'next/server';\nimport { validatePhoneNumber, validatePassword } from '../utils/authUtils';\nimport type { LegacyLoginRouteConfig, LegacyApiResponse } from './types';\n\nexport function createLegacyLoginHandler(config: LegacyLoginRouteConfig) {\n return async (request: NextRequest) => {\n try {\n const { phone, password } = await request.json();\n\n if (!phone || !password) {\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: '请输入手机号和密码' },\n { status: 400 }\n );\n }\n\n if (!validatePhoneNumber(phone)) {\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: '请输入正确的手机号格式' },\n { status: 400 }\n );\n }\n\n const passwordValidation = validatePassword(password);\n if (!passwordValidation.valid) {\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: passwordValidation.message || '密码格式错误' },\n { status: 400 }\n );\n }\n\n const user = await config.authService.verifyPassword(phone, password);\n if (!user) {\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: '手机号或密码错误' },\n { status: 401 }\n );\n }\n\n const session = await config.authService.createSession(user.id);\n await config.authService.updateLastLogin(user.id);\n\n const response = NextResponse.json<LegacyApiResponse>({\n success: true,\n message: '登录成功',\n user,\n sessionToken: session.sessionToken,\n data: { user, sessionToken: session.sessionToken },\n });\n\n const cookieOptions = {\n name: config.cookieOptions?.name || 'session_token',\n httpOnly: config.cookieOptions?.httpOnly !== false,\n secure: config.cookieOptions?.secure || false,\n sameSite: config.cookieOptions?.sameSite || 'lax',\n maxAge: config.cookieOptions?.maxAge || 30 * 24 * 60 * 60,\n path: config.cookieOptions?.path || '/',\n };\n\n response.cookies.set(cookieOptions.name, session.sessionToken, {\n httpOnly: cookieOptions.httpOnly,\n secure: cookieOptions.secure,\n sameSite: cookieOptions.sameSite,\n maxAge: cookieOptions.maxAge,\n path: cookieOptions.path,\n });\n\n return response;\n } catch (error) {\n console.error('💥 [LegacyLogin] 登录异常:', error);\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: '登录失败,请稍后重试' },\n { status: 500 }\n );\n }\n };\n}\n","import { NextRequest, NextResponse } from 'next/server';\nimport { validatePhoneNumber, validatePassword } from '../utils/authUtils';\nimport type { LegacyRegisterRouteConfig, LegacyApiResponse } from './types';\n\nexport function createLegacyRegisterHandler(config: LegacyRegisterRouteConfig) {\n return async (request: NextRequest) => {\n try {\n const { phone, password, name } = await request.json();\n\n if (!phone || !password) {\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: '请输入手机号和密码' },\n { status: 400 }\n );\n }\n\n if (!validatePhoneNumber(phone)) {\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: '请输入正确的手机号格式' },\n { status: 400 }\n );\n }\n\n const passwordValidation = validatePassword(password);\n if (!passwordValidation.valid) {\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: passwordValidation.message || '密码格式错误' },\n { status: 400 }\n );\n }\n\n const user = await config.authService.createUser(phone, password, name);\n const session = await config.authService.createSession(user.id);\n await config.authService.updateLastLogin(user.id);\n\n const response = NextResponse.json<LegacyApiResponse>({\n success: true,\n message: '注册成功',\n user,\n sessionToken: session.sessionToken,\n data: { user, sessionToken: session.sessionToken },\n });\n\n const cookieOptions = {\n name: config.cookieOptions?.name || 'session_token',\n httpOnly: config.cookieOptions?.httpOnly !== false,\n secure: config.cookieOptions?.secure || false,\n sameSite: config.cookieOptions?.sameSite || 'lax',\n maxAge: config.cookieOptions?.maxAge || 30 * 24 * 60 * 60,\n path: config.cookieOptions?.path || '/',\n };\n\n response.cookies.set(cookieOptions.name, session.sessionToken, {\n httpOnly: cookieOptions.httpOnly,\n secure: cookieOptions.secure,\n sameSite: cookieOptions.sameSite,\n maxAge: cookieOptions.maxAge,\n path: cookieOptions.path,\n });\n\n return response;\n } catch (error) {\n console.error('💥 [LegacyRegister] 注册异常:', error);\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: '注册失败,请稍后重试' },\n { status: 500 }\n );\n }\n };\n}\n","import { NextRequest, NextResponse } from 'next/server';\nimport type { LegacyLogoutRouteConfig, LegacyApiResponse } from './types';\n\nexport function createLegacyLogoutHandler(config: LegacyLogoutRouteConfig) {\n return async (request: NextRequest) => {\n try {\n const cookieName = config.cookieOptions?.name || 'session_token';\n const sessionToken = request.cookies.get(cookieName)?.value;\n\n if (sessionToken) {\n await config.authService.deleteSession(sessionToken);\n }\n\n const response = NextResponse.json<LegacyApiResponse>({\n success: true,\n message: '登出成功',\n });\n\n response.cookies.set(cookieName, '', {\n httpOnly: true,\n secure: config.cookieOptions?.secure || false,\n sameSite: config.cookieOptions?.sameSite || 'lax',\n maxAge: 0,\n path: config.cookieOptions?.path || '/',\n });\n\n return response;\n } catch (error) {\n console.error('💥 [LegacyLogout] 登出异常:', error);\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: '登出失败,请稍后重试' },\n { status: 500 }\n );\n }\n };\n}\n","import { NextRequest, NextResponse } from 'next/server';\nimport type { LegacyValidateRouteConfig, LegacyApiResponse } from './types';\n\nexport function createLegacyValidateHandler(config: LegacyValidateRouteConfig) {\n return async (request: NextRequest) => {\n try {\n const cookieName = config.cookieOptions?.name || 'session_token';\n const sessionToken = request.cookies.get(cookieName)?.value;\n\n if (!sessionToken) {\n return NextResponse.json<LegacyApiResponse>(\n { success: true, valid: false, user: null, data: { valid: false, user: null } },\n { status: 200 }\n );\n }\n\n const validation = await config.authService.validateSession(sessionToken);\n return NextResponse.json<LegacyApiResponse>({\n success: true,\n valid: validation.valid,\n user: validation.user,\n message: validation.valid ? '会话有效' : '会话无效',\n data: validation,\n });\n } catch (error) {\n console.error('💥 [LegacyValidate] 验证异常:', error);\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: '验证失败' },\n { status: 500 }\n );\n }\n };\n}\n","import { NextRequest, NextResponse } from 'next/server';\nimport { validatePhoneNumber } from '../utils/authUtils';\nimport type { LegacySendVerificationCodeConfig, LegacyApiResponse } from './types';\n\nexport function createLegacySendVerificationCodeHandler(config: LegacySendVerificationCodeConfig) {\n return async (request: NextRequest) => {\n try {\n const { phone } = await request.json();\n if (!validatePhoneNumber(phone)) {\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: '请输入正确的手机号格式' },\n { status: 400 }\n );\n }\n\n const user = await config.authService.getUserByPhone(phone);\n if (!user) {\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: '该手机号未注册' },\n { status: 404 }\n );\n }\n\n await config.authService.sendVerificationCode(phone);\n return NextResponse.json<LegacyApiResponse>({\n success: true,\n message: '验证码已发送',\n });\n } catch (error) {\n console.error('💥 [LegacySendVerificationCode] 发送异常:', error);\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: '发送验证码失败,请稍后重试' },\n { status: 500 }\n );\n }\n };\n}\n","import { NextRequest, NextResponse } from 'next/server';\nimport { validatePhoneNumber, validatePassword } from '../utils/authUtils';\nimport type { LegacyResetPasswordConfig, LegacyApiResponse } from './types';\n\nexport function createLegacyResetPasswordHandler(config: LegacyResetPasswordConfig) {\n return async (request: NextRequest) => {\n try {\n const { phone, newPassword, verificationCode } = await request.json();\n\n if (!validatePhoneNumber(phone)) {\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: '请输入正确的手机号格式' },\n { status: 400 }\n );\n }\n\n const passwordValidation = validatePassword(newPassword);\n if (!passwordValidation.valid) {\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: passwordValidation.message || '密码格式错误' },\n { status: 400 }\n );\n }\n\n const isValidCode = await config.authService.verifyCode(phone, verificationCode);\n if (!isValidCode) {\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: '验证码无效或已过期' },\n { status: 400 }\n );\n }\n\n await config.authService.resetPassword(phone, newPassword);\n return NextResponse.json<LegacyApiResponse>({\n success: true,\n message: '密码重置成功',\n });\n } catch (error) {\n console.error('💥 [LegacyResetPassword] 重置异常:', error);\n return NextResponse.json<LegacyApiResponse>(\n { success: false, message: '重置密码失败,请稍后重试' },\n { status: 500 }\n );\n }\n };\n}\n"]}
@@ -0,0 +1,271 @@
1
+ import { NextResponse } from 'next/server';
2
+
3
+ // src/business/auth-legacy/routes/login.ts
4
+
5
+ // src/business/auth-legacy/utils/authUtils.ts
6
+ function validatePhoneNumber(phone) {
7
+ return /^1[3-9]\d{9}$/.test(phone);
8
+ }
9
+ function validatePassword(password) {
10
+ if (!password) {
11
+ return { valid: false, message: "\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A" };
12
+ }
13
+ if (password.length < 6) {
14
+ return { valid: false, message: "\u5BC6\u7801\u957F\u5EA6\u81F3\u5C116\u4F4D" };
15
+ }
16
+ return { valid: true };
17
+ }
18
+
19
+ // src/business/auth-legacy/routes/login.ts
20
+ function createLegacyLoginHandler(config) {
21
+ return async (request) => {
22
+ try {
23
+ const { phone, password } = await request.json();
24
+ if (!phone || !password) {
25
+ return NextResponse.json(
26
+ { success: false, message: "\u8BF7\u8F93\u5165\u624B\u673A\u53F7\u548C\u5BC6\u7801" },
27
+ { status: 400 }
28
+ );
29
+ }
30
+ if (!validatePhoneNumber(phone)) {
31
+ return NextResponse.json(
32
+ { success: false, message: "\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u683C\u5F0F" },
33
+ { status: 400 }
34
+ );
35
+ }
36
+ const passwordValidation = validatePassword(password);
37
+ if (!passwordValidation.valid) {
38
+ return NextResponse.json(
39
+ { success: false, message: passwordValidation.message || "\u5BC6\u7801\u683C\u5F0F\u9519\u8BEF" },
40
+ { status: 400 }
41
+ );
42
+ }
43
+ const user = await config.authService.verifyPassword(phone, password);
44
+ if (!user) {
45
+ return NextResponse.json(
46
+ { success: false, message: "\u624B\u673A\u53F7\u6216\u5BC6\u7801\u9519\u8BEF" },
47
+ { status: 401 }
48
+ );
49
+ }
50
+ const session = await config.authService.createSession(user.id);
51
+ await config.authService.updateLastLogin(user.id);
52
+ const response = NextResponse.json({
53
+ success: true,
54
+ message: "\u767B\u5F55\u6210\u529F",
55
+ user,
56
+ sessionToken: session.sessionToken,
57
+ data: { user, sessionToken: session.sessionToken }
58
+ });
59
+ const cookieOptions = {
60
+ name: config.cookieOptions?.name || "session_token",
61
+ httpOnly: config.cookieOptions?.httpOnly !== false,
62
+ secure: config.cookieOptions?.secure || false,
63
+ sameSite: config.cookieOptions?.sameSite || "lax",
64
+ maxAge: config.cookieOptions?.maxAge || 30 * 24 * 60 * 60,
65
+ path: config.cookieOptions?.path || "/"
66
+ };
67
+ response.cookies.set(cookieOptions.name, session.sessionToken, {
68
+ httpOnly: cookieOptions.httpOnly,
69
+ secure: cookieOptions.secure,
70
+ sameSite: cookieOptions.sameSite,
71
+ maxAge: cookieOptions.maxAge,
72
+ path: cookieOptions.path
73
+ });
74
+ return response;
75
+ } catch (error) {
76
+ console.error("\u{1F4A5} [LegacyLogin] \u767B\u5F55\u5F02\u5E38:", error);
77
+ return NextResponse.json(
78
+ { success: false, message: "\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" },
79
+ { status: 500 }
80
+ );
81
+ }
82
+ };
83
+ }
84
+ function createLegacyRegisterHandler(config) {
85
+ return async (request) => {
86
+ try {
87
+ const { phone, password, name } = await request.json();
88
+ if (!phone || !password) {
89
+ return NextResponse.json(
90
+ { success: false, message: "\u8BF7\u8F93\u5165\u624B\u673A\u53F7\u548C\u5BC6\u7801" },
91
+ { status: 400 }
92
+ );
93
+ }
94
+ if (!validatePhoneNumber(phone)) {
95
+ return NextResponse.json(
96
+ { success: false, message: "\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u683C\u5F0F" },
97
+ { status: 400 }
98
+ );
99
+ }
100
+ const passwordValidation = validatePassword(password);
101
+ if (!passwordValidation.valid) {
102
+ return NextResponse.json(
103
+ { success: false, message: passwordValidation.message || "\u5BC6\u7801\u683C\u5F0F\u9519\u8BEF" },
104
+ { status: 400 }
105
+ );
106
+ }
107
+ const user = await config.authService.createUser(phone, password, name);
108
+ const session = await config.authService.createSession(user.id);
109
+ await config.authService.updateLastLogin(user.id);
110
+ const response = NextResponse.json({
111
+ success: true,
112
+ message: "\u6CE8\u518C\u6210\u529F",
113
+ user,
114
+ sessionToken: session.sessionToken,
115
+ data: { user, sessionToken: session.sessionToken }
116
+ });
117
+ const cookieOptions = {
118
+ name: config.cookieOptions?.name || "session_token",
119
+ httpOnly: config.cookieOptions?.httpOnly !== false,
120
+ secure: config.cookieOptions?.secure || false,
121
+ sameSite: config.cookieOptions?.sameSite || "lax",
122
+ maxAge: config.cookieOptions?.maxAge || 30 * 24 * 60 * 60,
123
+ path: config.cookieOptions?.path || "/"
124
+ };
125
+ response.cookies.set(cookieOptions.name, session.sessionToken, {
126
+ httpOnly: cookieOptions.httpOnly,
127
+ secure: cookieOptions.secure,
128
+ sameSite: cookieOptions.sameSite,
129
+ maxAge: cookieOptions.maxAge,
130
+ path: cookieOptions.path
131
+ });
132
+ return response;
133
+ } catch (error) {
134
+ console.error("\u{1F4A5} [LegacyRegister] \u6CE8\u518C\u5F02\u5E38:", error);
135
+ return NextResponse.json(
136
+ { success: false, message: "\u6CE8\u518C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" },
137
+ { status: 500 }
138
+ );
139
+ }
140
+ };
141
+ }
142
+ function createLegacyLogoutHandler(config) {
143
+ return async (request) => {
144
+ try {
145
+ const cookieName = config.cookieOptions?.name || "session_token";
146
+ const sessionToken = request.cookies.get(cookieName)?.value;
147
+ if (sessionToken) {
148
+ await config.authService.deleteSession(sessionToken);
149
+ }
150
+ const response = NextResponse.json({
151
+ success: true,
152
+ message: "\u767B\u51FA\u6210\u529F"
153
+ });
154
+ response.cookies.set(cookieName, "", {
155
+ httpOnly: true,
156
+ secure: config.cookieOptions?.secure || false,
157
+ sameSite: config.cookieOptions?.sameSite || "lax",
158
+ maxAge: 0,
159
+ path: config.cookieOptions?.path || "/"
160
+ });
161
+ return response;
162
+ } catch (error) {
163
+ console.error("\u{1F4A5} [LegacyLogout] \u767B\u51FA\u5F02\u5E38:", error);
164
+ return NextResponse.json(
165
+ { success: false, message: "\u767B\u51FA\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" },
166
+ { status: 500 }
167
+ );
168
+ }
169
+ };
170
+ }
171
+ function createLegacyValidateHandler(config) {
172
+ return async (request) => {
173
+ try {
174
+ const cookieName = config.cookieOptions?.name || "session_token";
175
+ const sessionToken = request.cookies.get(cookieName)?.value;
176
+ if (!sessionToken) {
177
+ return NextResponse.json(
178
+ { success: true, valid: false, user: null, data: { valid: false, user: null } },
179
+ { status: 200 }
180
+ );
181
+ }
182
+ const validation = await config.authService.validateSession(sessionToken);
183
+ return NextResponse.json({
184
+ success: true,
185
+ valid: validation.valid,
186
+ user: validation.user,
187
+ message: validation.valid ? "\u4F1A\u8BDD\u6709\u6548" : "\u4F1A\u8BDD\u65E0\u6548",
188
+ data: validation
189
+ });
190
+ } catch (error) {
191
+ console.error("\u{1F4A5} [LegacyValidate] \u9A8C\u8BC1\u5F02\u5E38:", error);
192
+ return NextResponse.json(
193
+ { success: false, message: "\u9A8C\u8BC1\u5931\u8D25" },
194
+ { status: 500 }
195
+ );
196
+ }
197
+ };
198
+ }
199
+ function createLegacySendVerificationCodeHandler(config) {
200
+ return async (request) => {
201
+ try {
202
+ const { phone } = await request.json();
203
+ if (!validatePhoneNumber(phone)) {
204
+ return NextResponse.json(
205
+ { success: false, message: "\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u683C\u5F0F" },
206
+ { status: 400 }
207
+ );
208
+ }
209
+ const user = await config.authService.getUserByPhone(phone);
210
+ if (!user) {
211
+ return NextResponse.json(
212
+ { success: false, message: "\u8BE5\u624B\u673A\u53F7\u672A\u6CE8\u518C" },
213
+ { status: 404 }
214
+ );
215
+ }
216
+ await config.authService.sendVerificationCode(phone);
217
+ return NextResponse.json({
218
+ success: true,
219
+ message: "\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001"
220
+ });
221
+ } catch (error) {
222
+ console.error("\u{1F4A5} [LegacySendVerificationCode] \u53D1\u9001\u5F02\u5E38:", error);
223
+ return NextResponse.json(
224
+ { success: false, message: "\u53D1\u9001\u9A8C\u8BC1\u7801\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" },
225
+ { status: 500 }
226
+ );
227
+ }
228
+ };
229
+ }
230
+ function createLegacyResetPasswordHandler(config) {
231
+ return async (request) => {
232
+ try {
233
+ const { phone, newPassword, verificationCode } = await request.json();
234
+ if (!validatePhoneNumber(phone)) {
235
+ return NextResponse.json(
236
+ { success: false, message: "\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u683C\u5F0F" },
237
+ { status: 400 }
238
+ );
239
+ }
240
+ const passwordValidation = validatePassword(newPassword);
241
+ if (!passwordValidation.valid) {
242
+ return NextResponse.json(
243
+ { success: false, message: passwordValidation.message || "\u5BC6\u7801\u683C\u5F0F\u9519\u8BEF" },
244
+ { status: 400 }
245
+ );
246
+ }
247
+ const isValidCode = await config.authService.verifyCode(phone, verificationCode);
248
+ if (!isValidCode) {
249
+ return NextResponse.json(
250
+ { success: false, message: "\u9A8C\u8BC1\u7801\u65E0\u6548\u6216\u5DF2\u8FC7\u671F" },
251
+ { status: 400 }
252
+ );
253
+ }
254
+ await config.authService.resetPassword(phone, newPassword);
255
+ return NextResponse.json({
256
+ success: true,
257
+ message: "\u5BC6\u7801\u91CD\u7F6E\u6210\u529F"
258
+ });
259
+ } catch (error) {
260
+ console.error("\u{1F4A5} [LegacyResetPassword] \u91CD\u7F6E\u5F02\u5E38:", error);
261
+ return NextResponse.json(
262
+ { success: false, message: "\u91CD\u7F6E\u5BC6\u7801\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" },
263
+ { status: 500 }
264
+ );
265
+ }
266
+ };
267
+ }
268
+
269
+ export { createLegacyLoginHandler, createLegacyLogoutHandler, createLegacyRegisterHandler, createLegacyResetPasswordHandler, createLegacySendVerificationCodeHandler, createLegacyValidateHandler };
270
+ //# sourceMappingURL=index.mjs.map
271
+ //# sourceMappingURL=index.mjs.map