@arch-cadre/core 0.0.56 → 0.0.58

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 (297) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +1 -0
  2. package/dist/_virtual/_rolldown/runtime.mjs +1 -0
  3. package/dist/core/auth/augment.cjs +1 -0
  4. package/dist/core/auth/augment.d.cts +20 -0
  5. package/dist/core/auth/augment.d.cts.map +1 -0
  6. package/dist/core/auth/augment.d.mts +20 -0
  7. package/dist/core/auth/augment.d.mts.map +1 -0
  8. package/dist/core/auth/augment.mjs +2 -0
  9. package/dist/core/auth/augment.mjs.map +1 -0
  10. package/dist/core/auth/email-verification.cjs +1 -0
  11. package/dist/core/auth/email-verification.d.cts +62 -0
  12. package/dist/core/auth/email-verification.d.cts.map +1 -0
  13. package/dist/core/auth/email-verification.d.mts +62 -0
  14. package/dist/core/auth/email-verification.d.mts.map +1 -0
  15. package/dist/core/auth/email-verification.mjs +2 -0
  16. package/dist/core/auth/email-verification.mjs.map +1 -0
  17. package/dist/core/auth/logic.cjs +1 -0
  18. package/dist/core/auth/logic.d.cts +110 -0
  19. package/dist/core/auth/logic.d.cts.map +1 -0
  20. package/dist/core/auth/logic.d.mts +110 -0
  21. package/dist/core/auth/logic.d.mts.map +1 -0
  22. package/dist/core/auth/logic.mjs +2 -0
  23. package/dist/core/auth/logic.mjs.map +1 -0
  24. package/dist/core/auth/password-reset.cjs +1 -0
  25. package/dist/core/auth/password-reset.d.cts +39 -0
  26. package/dist/core/auth/password-reset.d.cts.map +1 -0
  27. package/dist/core/auth/password-reset.d.mts +39 -0
  28. package/dist/core/auth/password-reset.d.mts.map +1 -0
  29. package/dist/core/auth/password-reset.mjs +2 -0
  30. package/dist/core/auth/password-reset.mjs.map +1 -0
  31. package/dist/core/auth/rbac.cjs +1 -0
  32. package/dist/core/auth/rbac.d.cts +61 -0
  33. package/dist/core/auth/rbac.d.cts.map +1 -0
  34. package/dist/core/auth/rbac.d.mts +61 -0
  35. package/dist/core/auth/rbac.d.mts.map +1 -0
  36. package/dist/core/auth/rbac.mjs +2 -0
  37. package/dist/core/auth/rbac.mjs.map +1 -0
  38. package/dist/core/auth/session.cjs +1 -0
  39. package/dist/core/auth/session.d.cts +54 -0
  40. package/dist/core/auth/session.d.cts.map +1 -0
  41. package/dist/core/auth/session.d.mts +54 -0
  42. package/dist/core/auth/session.d.mts.map +1 -0
  43. package/dist/core/auth/session.mjs +2 -0
  44. package/dist/core/auth/session.mjs.map +1 -0
  45. package/dist/core/auth/types.d.cts +55 -0
  46. package/dist/core/auth/types.d.cts.map +1 -0
  47. package/dist/core/auth/types.d.mts +55 -0
  48. package/dist/core/auth/types.d.mts.map +1 -0
  49. package/dist/core/auth/utils/encode.cjs +1 -0
  50. package/dist/core/auth/utils/encode.d.cts +15 -0
  51. package/dist/core/auth/utils/encode.d.cts.map +1 -0
  52. package/dist/core/auth/utils/encode.d.mts +15 -0
  53. package/dist/core/auth/utils/encode.d.mts.map +1 -0
  54. package/dist/core/auth/utils/encode.mjs +2 -0
  55. package/dist/core/auth/utils/encode.mjs.map +1 -0
  56. package/dist/core/auth/utils/encryption.cjs +1 -0
  57. package/dist/core/auth/utils/{encryption.d.ts → encryption.d.cts} +8 -5
  58. package/dist/core/auth/utils/encryption.d.cts.map +1 -0
  59. package/dist/core/auth/utils/encryption.d.mts +28 -0
  60. package/dist/core/auth/utils/encryption.d.mts.map +1 -0
  61. package/dist/core/auth/utils/encryption.mjs +2 -0
  62. package/dist/core/auth/utils/encryption.mjs.map +1 -0
  63. package/dist/core/auth/validation.cjs +1 -0
  64. package/dist/core/auth/validation.d.cts +48 -0
  65. package/dist/core/auth/validation.d.cts.map +1 -0
  66. package/dist/core/auth/validation.d.mts +48 -0
  67. package/dist/core/auth/validation.d.mts.map +1 -0
  68. package/dist/core/auth/validation.mjs +2 -0
  69. package/dist/core/auth/validation.mjs.map +1 -0
  70. package/dist/core/bootstrap.cjs +1 -0
  71. package/dist/core/bootstrap.d.cts +5 -0
  72. package/dist/core/bootstrap.d.cts.map +1 -0
  73. package/dist/core/bootstrap.d.mts +5 -0
  74. package/dist/core/bootstrap.d.mts.map +1 -0
  75. package/dist/core/bootstrap.mjs +2 -0
  76. package/dist/core/bootstrap.mjs.map +1 -0
  77. package/dist/core/config.cjs +1 -0
  78. package/dist/core/config.d.cts +11 -0
  79. package/dist/core/config.d.cts.map +1 -0
  80. package/dist/core/config.d.mts +11 -0
  81. package/dist/core/config.d.mts.map +1 -0
  82. package/dist/core/config.mjs +2 -0
  83. package/dist/core/config.mjs.map +1 -0
  84. package/dist/core/config.server.cjs +1 -0
  85. package/dist/core/config.server.d.cts +16 -0
  86. package/dist/core/config.server.d.cts.map +1 -0
  87. package/dist/core/config.server.d.mts +16 -0
  88. package/dist/core/config.server.d.mts.map +1 -0
  89. package/dist/core/config.server.mjs +2 -0
  90. package/dist/core/config.server.mjs.map +1 -0
  91. package/dist/core/event-bus.cjs +1 -0
  92. package/dist/core/event-bus.d.cts +17 -0
  93. package/dist/core/event-bus.d.cts.map +1 -0
  94. package/dist/core/event-bus.d.mts +17 -0
  95. package/dist/core/event-bus.d.mts.map +1 -0
  96. package/dist/core/event-bus.mjs +2 -0
  97. package/dist/core/event-bus.mjs.map +1 -0
  98. package/dist/core/filesystem/index.cjs +1 -0
  99. package/dist/core/filesystem/index.mjs +2 -0
  100. package/dist/core/filesystem/index.mjs.map +1 -0
  101. package/dist/core/filesystem/providers/local.cjs +1 -0
  102. package/dist/core/filesystem/providers/local.mjs +2 -0
  103. package/dist/core/filesystem/providers/local.mjs.map +1 -0
  104. package/dist/core/filesystem/service.cjs +1 -0
  105. package/dist/core/filesystem/service.d.cts +19 -0
  106. package/dist/core/filesystem/service.d.cts.map +1 -0
  107. package/dist/core/filesystem/service.d.mts +19 -0
  108. package/dist/core/filesystem/service.d.mts.map +1 -0
  109. package/dist/core/filesystem/service.mjs +2 -0
  110. package/dist/core/filesystem/service.mjs.map +1 -0
  111. package/dist/core/filesystem/types.d.cts +22 -0
  112. package/dist/core/filesystem/types.d.cts.map +1 -0
  113. package/dist/core/filesystem/types.d.mts +22 -0
  114. package/dist/core/filesystem/types.d.mts.map +1 -0
  115. package/dist/core/notifications/actions.cjs +1 -0
  116. package/dist/core/notifications/actions.d.cts +58 -0
  117. package/dist/core/notifications/actions.d.cts.map +1 -0
  118. package/dist/core/notifications/actions.d.mts +58 -0
  119. package/dist/core/notifications/actions.d.mts.map +1 -0
  120. package/dist/core/notifications/actions.mjs +2 -0
  121. package/dist/core/notifications/actions.mjs.map +1 -0
  122. package/dist/core/notifications/index.cjs +1 -0
  123. package/dist/core/notifications/index.mjs +1 -0
  124. package/dist/core/notifications/service.cjs +1 -0
  125. package/dist/core/notifications/service.d.cts +9 -0
  126. package/dist/core/notifications/service.d.cts.map +1 -0
  127. package/dist/core/notifications/service.d.mts +9 -0
  128. package/dist/core/notifications/service.d.mts.map +1 -0
  129. package/dist/core/notifications/service.mjs +2 -0
  130. package/dist/core/notifications/service.mjs.map +1 -0
  131. package/dist/core/notifications/types.d.cts +21 -0
  132. package/dist/core/notifications/types.d.cts.map +1 -0
  133. package/dist/core/notifications/types.d.mts +21 -0
  134. package/dist/core/notifications/types.d.mts.map +1 -0
  135. package/dist/core/setup.cjs +1 -0
  136. package/dist/core/setup.d.cts +9 -0
  137. package/dist/core/setup.d.cts.map +1 -0
  138. package/dist/core/setup.d.mts +9 -0
  139. package/dist/core/setup.d.mts.map +1 -0
  140. package/dist/core/setup.mjs +2 -0
  141. package/dist/core/setup.mjs.map +1 -0
  142. package/dist/core/types.d.cts +13 -0
  143. package/dist/core/types.d.cts.map +1 -0
  144. package/dist/core/types.d.mts +13 -0
  145. package/dist/core/types.d.mts.map +1 -0
  146. package/dist/index.cjs +1 -0
  147. package/dist/index.d.cts +8 -0
  148. package/dist/index.d.mts +8 -0
  149. package/dist/index.mjs +1 -0
  150. package/dist/server/auth/email.cjs +1 -0
  151. package/dist/server/auth/email.d.cts +13 -0
  152. package/dist/server/auth/email.d.cts.map +1 -0
  153. package/dist/server/auth/email.d.mts +13 -0
  154. package/dist/server/auth/email.d.mts.map +1 -0
  155. package/dist/server/auth/email.mjs +2 -0
  156. package/dist/server/auth/email.mjs.map +1 -0
  157. package/dist/server/auth/password.cjs +1 -0
  158. package/dist/server/auth/{password.d.ts → password.d.cts} +7 -4
  159. package/dist/server/auth/password.d.cts.map +1 -0
  160. package/dist/server/auth/{password.js → password.d.mts} +7 -14
  161. package/dist/server/auth/password.d.mts.map +1 -0
  162. package/dist/server/auth/password.mjs +2 -0
  163. package/dist/server/auth/password.mjs.map +1 -0
  164. package/dist/server/auth/user.cjs +1 -0
  165. package/dist/server/auth/user.d.cts +58 -0
  166. package/dist/server/auth/user.d.cts.map +1 -0
  167. package/dist/server/auth/user.d.mts +58 -0
  168. package/dist/server/auth/user.d.mts.map +1 -0
  169. package/dist/server/auth/user.mjs +2 -0
  170. package/dist/server/auth/user.mjs.map +1 -0
  171. package/dist/server/database/inject.cjs +1 -0
  172. package/dist/server/database/inject.d.cts +15 -0
  173. package/dist/server/database/inject.d.cts.map +1 -0
  174. package/dist/server/database/inject.d.mts +15 -0
  175. package/dist/server/database/inject.d.mts.map +1 -0
  176. package/dist/server/database/inject.mjs +2 -0
  177. package/dist/server/database/inject.mjs.map +1 -0
  178. package/dist/server/database/schema.cjs +1 -0
  179. package/dist/server/database/schema.d.cts +3065 -0
  180. package/dist/server/database/{schema.d.ts.map → schema.d.cts.map} +1 -1
  181. package/dist/server/database/schema.d.mts +3065 -0
  182. package/dist/server/database/schema.d.mts.map +1 -0
  183. package/dist/server/database/schema.mjs +2 -0
  184. package/dist/server/database/schema.mjs.map +1 -0
  185. package/dist/server/emails/index.cjs +1 -0
  186. package/dist/server/emails/index.d.cts +26 -0
  187. package/dist/server/emails/index.d.cts.map +1 -0
  188. package/dist/server/emails/index.d.mts +26 -0
  189. package/dist/server/emails/index.d.mts.map +1 -0
  190. package/dist/server/emails/index.mjs +2 -0
  191. package/dist/server/emails/index.mjs.map +1 -0
  192. package/dist/server.cjs +1 -0
  193. package/dist/server.d.cts +26 -0
  194. package/dist/server.d.mts +26 -0
  195. package/dist/server.mjs +1 -0
  196. package/package.json +15 -7
  197. package/dist/core/auth/augment.d.ts +0 -18
  198. package/dist/core/auth/augment.d.ts.map +0 -1
  199. package/dist/core/auth/augment.js +0 -45
  200. package/dist/core/auth/email-verification.d.ts +0 -58
  201. package/dist/core/auth/email-verification.d.ts.map +0 -1
  202. package/dist/core/auth/email-verification.js +0 -105
  203. package/dist/core/auth/events.d.ts +0 -53
  204. package/dist/core/auth/events.d.ts.map +0 -1
  205. package/dist/core/auth/events.js +0 -1
  206. package/dist/core/auth/logic.d.ts +0 -106
  207. package/dist/core/auth/logic.d.ts.map +0 -1
  208. package/dist/core/auth/logic.js +0 -245
  209. package/dist/core/auth/password-reset.d.ts +0 -35
  210. package/dist/core/auth/password-reset.d.ts.map +0 -1
  211. package/dist/core/auth/password-reset.js +0 -122
  212. package/dist/core/auth/rbac.d.ts +0 -56
  213. package/dist/core/auth/rbac.d.ts.map +0 -1
  214. package/dist/core/auth/rbac.js +0 -134
  215. package/dist/core/auth/session.d.ts +0 -50
  216. package/dist/core/auth/session.d.ts.map +0 -1
  217. package/dist/core/auth/session.js +0 -152
  218. package/dist/core/auth/types.d.ts +0 -52
  219. package/dist/core/auth/types.d.ts.map +0 -1
  220. package/dist/core/auth/types.js +0 -1
  221. package/dist/core/auth/utils/encode.d.ts +0 -12
  222. package/dist/core/auth/utils/encode.d.ts.map +0 -1
  223. package/dist/core/auth/utils/encode.js +0 -20
  224. package/dist/core/auth/utils/encryption.d.ts.map +0 -1
  225. package/dist/core/auth/utils/encryption.js +0 -62
  226. package/dist/core/auth/validation.d.ts +0 -44
  227. package/dist/core/auth/validation.d.ts.map +0 -1
  228. package/dist/core/auth/validation.js +0 -41
  229. package/dist/core/bootstrap.d.ts +0 -2
  230. package/dist/core/bootstrap.d.ts.map +0 -1
  231. package/dist/core/bootstrap.js +0 -51
  232. package/dist/core/config.d.ts +0 -9
  233. package/dist/core/config.d.ts.map +0 -1
  234. package/dist/core/config.js +0 -3
  235. package/dist/core/config.server.d.ts +0 -12
  236. package/dist/core/config.server.d.ts.map +0 -1
  237. package/dist/core/config.server.js +0 -61
  238. package/dist/core/event-bus.d.ts +0 -14
  239. package/dist/core/event-bus.d.ts.map +0 -1
  240. package/dist/core/event-bus.js +0 -51
  241. package/dist/core/filesystem/index.d.ts +0 -4
  242. package/dist/core/filesystem/index.d.ts.map +0 -1
  243. package/dist/core/filesystem/index.js +0 -10
  244. package/dist/core/filesystem/providers/local.d.ts +0 -8
  245. package/dist/core/filesystem/providers/local.d.ts.map +0 -1
  246. package/dist/core/filesystem/providers/local.js +0 -42
  247. package/dist/core/filesystem/service.d.ts +0 -16
  248. package/dist/core/filesystem/service.d.ts.map +0 -1
  249. package/dist/core/filesystem/service.js +0 -51
  250. package/dist/core/filesystem/types.d.ts +0 -19
  251. package/dist/core/filesystem/types.d.ts.map +0 -1
  252. package/dist/core/filesystem/types.js +0 -1
  253. package/dist/core/notifications/actions.d.ts +0 -54
  254. package/dist/core/notifications/actions.d.ts.map +0 -1
  255. package/dist/core/notifications/actions.js +0 -43
  256. package/dist/core/notifications/index.d.ts +0 -4
  257. package/dist/core/notifications/index.d.ts.map +0 -1
  258. package/dist/core/notifications/index.js +0 -3
  259. package/dist/core/notifications/service.d.ts +0 -7
  260. package/dist/core/notifications/service.d.ts.map +0 -1
  261. package/dist/core/notifications/service.js +0 -32
  262. package/dist/core/notifications/types.d.ts +0 -17
  263. package/dist/core/notifications/types.d.ts.map +0 -1
  264. package/dist/core/notifications/types.js +0 -1
  265. package/dist/core/setup.d.ts +0 -6
  266. package/dist/core/setup.d.ts.map +0 -1
  267. package/dist/core/setup.js +0 -25
  268. package/dist/core/types.d.ts +0 -10
  269. package/dist/core/types.d.ts.map +0 -1
  270. package/dist/core/types.js +0 -1
  271. package/dist/index.d.ts +0 -8
  272. package/dist/index.d.ts.map +0 -1
  273. package/dist/index.js +0 -16
  274. package/dist/server/auth/email.d.ts +0 -10
  275. package/dist/server/auth/email.d.ts.map +0 -1
  276. package/dist/server/auth/email.js +0 -20
  277. package/dist/server/auth/password.d.ts.map +0 -1
  278. package/dist/server/auth/types.d.ts +0 -13
  279. package/dist/server/auth/types.d.ts.map +0 -1
  280. package/dist/server/auth/types.js +0 -1
  281. package/dist/server/auth/user.d.ts +0 -54
  282. package/dist/server/auth/user.d.ts.map +0 -1
  283. package/dist/server/auth/user.js +0 -222
  284. package/dist/server/database/inject.d.ts +0 -11
  285. package/dist/server/database/inject.d.ts.map +0 -1
  286. package/dist/server/database/inject.js +0 -29
  287. package/dist/server/database/schema.d.ts +0 -3056
  288. package/dist/server/database/schema.js +0 -205
  289. package/dist/server/database/types.d.ts +0 -12
  290. package/dist/server/database/types.d.ts.map +0 -1
  291. package/dist/server/database/types.js +0 -1
  292. package/dist/server/emails/index.d.ts +0 -23
  293. package/dist/server/emails/index.d.ts.map +0 -1
  294. package/dist/server/emails/index.js +0 -67
  295. package/dist/server.d.ts +0 -25
  296. package/dist/server.d.ts.map +0 -1
  297. package/dist/server.js +0 -32
@@ -1,134 +0,0 @@
1
- "use server";
2
- import { and, eq, inArray } from "drizzle-orm";
3
- import { db } from "../../server/database/inject";
4
- import { permissionsTable, rolesTable, rolesToPermissionsTable, usersToPermissionsTable, usersToRolesTable, } from "../../server/database/schema";
5
- import { notificationService } from "../notifications/index";
6
- // Ensure notification service is loaded
7
- if (typeof window === "undefined") {
8
- notificationService.init();
9
- }
10
- /**
11
- * CORE RBAC LOGIC
12
- * This file handles all database operations for Roles and Permissions.
13
- */
14
- // --- Roles ---
15
- export async function getRoles() {
16
- return await db.select().from(rolesTable).orderBy(rolesTable.name);
17
- }
18
- export async function getRoleById(roleId) {
19
- const [role] = await db
20
- .select()
21
- .from(rolesTable)
22
- .where(eq(rolesTable.id, roleId));
23
- return role;
24
- }
25
- export async function createRole(name, description) {
26
- return await db.insert(rolesTable).values({ name, description }).returning();
27
- }
28
- export async function deleteRole(roleId) {
29
- return await db.delete(rolesTable).where(eq(rolesTable.id, roleId));
30
- }
31
- // --- Permissions ---
32
- export async function getPermissions() {
33
- return await db
34
- .select()
35
- .from(permissionsTable)
36
- .orderBy(permissionsTable.name);
37
- }
38
- export async function createPermission(name, description) {
39
- return await db
40
- .insert(permissionsTable)
41
- .values({ name, description })
42
- .returning();
43
- }
44
- export async function deletePermission(permissionId) {
45
- return await db
46
- .delete(permissionsTable)
47
- .where(eq(permissionsTable.id, permissionId));
48
- }
49
- // --- Mappings ---
50
- export async function getRolePermissions(roleId) {
51
- return await db
52
- .select({
53
- id: permissionsTable.id,
54
- name: permissionsTable.name,
55
- })
56
- .from(rolesToPermissionsTable)
57
- .innerJoin(permissionsTable, eq(rolesToPermissionsTable.permissionId, permissionsTable.id))
58
- .where(eq(rolesToPermissionsTable.roleId, roleId));
59
- }
60
- export async function assignPermissionToRole(roleId, permissionId) {
61
- return await db
62
- .insert(rolesToPermissionsTable)
63
- .values({ roleId, permissionId })
64
- .onConflictDoNothing();
65
- }
66
- export async function revokePermissionFromRole(roleId, permissionId) {
67
- return await db
68
- .delete(rolesToPermissionsTable)
69
- .where(and(eq(rolesToPermissionsTable.roleId, roleId), eq(rolesToPermissionsTable.permissionId, permissionId)));
70
- }
71
- // --- User Assignment ---
72
- export async function assignRoleToUser(userId, roleId) {
73
- return await db
74
- .insert(usersToRolesTable)
75
- .values({ userId, roleId })
76
- .onConflictDoNothing();
77
- }
78
- export async function revokeRoleFromUser(userId, roleId) {
79
- return await db
80
- .delete(usersToRolesTable)
81
- .where(and(eq(usersToRolesTable.userId, userId), eq(usersToRolesTable.roleId, roleId)));
82
- }
83
- export async function assignPermissionToUser(userId, permissionId) {
84
- return await db
85
- .insert(usersToPermissionsTable)
86
- .values({ userId, permissionId })
87
- .onConflictDoNothing();
88
- }
89
- export async function revokePermissionFromUser(userId, permissionId) {
90
- return await db
91
- .delete(usersToPermissionsTable)
92
- .where(and(eq(usersToPermissionsTable.userId, userId), eq(usersToPermissionsTable.permissionId, permissionId)));
93
- }
94
- export async function getUserRbacData(userId) {
95
- const roles = await db
96
- .select({
97
- id: rolesTable.id,
98
- name: rolesTable.name,
99
- })
100
- .from(usersToRolesTable)
101
- .innerJoin(rolesTable, eq(usersToRolesTable.roleId, rolesTable.id))
102
- .where(eq(usersToRolesTable.userId, userId));
103
- const directPermissions = await db
104
- .select({
105
- id: permissionsTable.id,
106
- name: permissionsTable.name,
107
- })
108
- .from(usersToPermissionsTable)
109
- .innerJoin(permissionsTable, eq(usersToPermissionsTable.permissionId, permissionsTable.id))
110
- .where(eq(usersToPermissionsTable.userId, userId));
111
- // Fetch inherited permissions from roles
112
- let rolePermissions = [];
113
- if (roles.length > 0) {
114
- const roleIds = roles.map((r) => r.id);
115
- rolePermissions = await db
116
- .select({
117
- id: permissionsTable.id,
118
- name: permissionsTable.name,
119
- })
120
- .from(rolesToPermissionsTable)
121
- .innerJoin(permissionsTable, eq(rolesToPermissionsTable.permissionId, permissionsTable.id))
122
- .where(inArray(rolesToPermissionsTable.roleId, roleIds));
123
- }
124
- // Combine for effective permissions
125
- const effectiveMap = new Map();
126
- for (const p of [...directPermissions, ...rolePermissions]) {
127
- effectiveMap.set(p.id, p);
128
- }
129
- return {
130
- roles,
131
- directPermissions,
132
- effectivePermissions: Array.from(effectiveMap.values()),
133
- };
134
- }
@@ -1,50 +0,0 @@
1
- import type { AuthSession, Session, SessionFlags, UserSession } from "./types";
2
- /**
3
- * Returns the user's IP address.
4
- */
5
- export declare function getIPAddress(): Promise<string | null>;
6
- /**
7
- * Validates the session token.
8
- */
9
- export declare function validateSessionToken(token: string): Promise<AuthSession>;
10
- /**
11
- * Returns the current user session from cookies.
12
- */
13
- export declare const getCurrentSession: () => Promise<AuthSession>;
14
- /**
15
- * Invalidates a single session.
16
- */
17
- export declare function invalidateSession(sessionId: string): Promise<void>;
18
- /**
19
- * Invalidates all user sessions.
20
- */
21
- export declare function invalidateUserSessions(userId: string): Promise<void>;
22
- /**
23
- * Sets the session token in a cookie.
24
- */
25
- export declare function setSessionTokenCookie(token: string, expiresAt: Date): Promise<void>;
26
- /**
27
- * Removes the session token cookie.
28
- */
29
- export declare function deleteSessionTokenCookie(): Promise<void>;
30
- /**
31
- * Generates a new random session token.
32
- */
33
- export declare function generateSessionToken(): Promise<string>;
34
- /**
35
- * Creates a new session in the database.
36
- */
37
- export declare function createSession(token: string, userId: string, flags: SessionFlags): Promise<Session>;
38
- /**
39
- * Signs the user out and redirects to the sign-in page.
40
- */
41
- export declare function sessionSignOut(): Promise<void>;
42
- /**
43
- * Get all active sessions for a user.
44
- */
45
- export declare function getUserSessions(userId: string, currentSessionId: string): Promise<UserSession[]>;
46
- /**
47
- * Invalidate all sessions for a user except the specified current one.
48
- */
49
- export declare function invalidateOtherSessions(userId: string, currentSessionId: string): Promise<void>;
50
- //# sourceMappingURL=session.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/core/auth/session.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,WAAW,EACX,OAAO,EACP,YAAY,EAEZ,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE3D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,CAAC,CAoCtB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,WAAW,CAS7D,CAAC;AAEF;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1E;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,IAAI,GACd,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;GAEG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG9D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAI5D;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,OAAO,CAAC,CAclB;AAED;;GAEG;AACH,wBAAsB,cAAc,kBASnC;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,WAAW,EAAE,CAAC,CAYxB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC,CASf"}
@@ -1,152 +0,0 @@
1
- "use server";
2
- import { sha256 } from "@oslojs/crypto/sha2";
3
- import { encodeBase32LowerCaseNoPadding, encodeHexLowerCase, } from "@oslojs/encoding";
4
- import { addDays } from "date-fns";
5
- import { and, eq, ne } from "drizzle-orm";
6
- import { cookies, headers } from "next/headers";
7
- import { redirect } from "next/navigation";
8
- import { db } from "../../server/database/inject";
9
- import { sessionTable, userTable } from "../../server/database/schema";
10
- import { augmentSession } from "./augment";
11
- import { performFullUserAugmentation } from "./logic";
12
- /**
13
- * Returns the user's IP address.
14
- */
15
- export async function getIPAddress() {
16
- return (await headers()).get("x-forwarded-for");
17
- }
18
- /**
19
- * Validates the session token.
20
- */
21
- export async function validateSessionToken(token) {
22
- const sessionId = encodeHexLowerCase(sha256(new TextEncoder().encode(token)));
23
- const [row] = await db
24
- .select({
25
- session: sessionTable,
26
- user: userTable,
27
- })
28
- .from(sessionTable)
29
- .innerJoin(userTable, eq(sessionTable.userId, userTable.id))
30
- .where(eq(sessionTable.id, sessionId));
31
- if (!row || !row.user) {
32
- return { session: null, user: null };
33
- }
34
- const { session: baseSession, user: baseUser } = row;
35
- // STRICTLY remove non-serializable and sensitive fields
36
- const { password, recovery_code, ...safeUser } = baseUser;
37
- // Check if session is expired
38
- if (new Date() > baseSession.expiresAt) {
39
- await db.delete(sessionTable).where(eq(sessionTable.id, baseSession.id));
40
- return { session: null, user: null };
41
- }
42
- // AUGMENT (EXTENSIBILITY POINTS)
43
- const augmentedUser = await performFullUserAugmentation(safeUser);
44
- const augmentedSession = await augmentSession(baseSession);
45
- // ENSURE PLAIN OBJECTS for Client Components
46
- return {
47
- session: augmentedSession ? { ...augmentedSession } : null,
48
- user: augmentedUser ? { ...augmentedUser } : null,
49
- };
50
- }
51
- /**
52
- * Returns the current user session from cookies.
53
- */
54
- export const getCurrentSession = async () => {
55
- var _a, _b;
56
- const cookieStore = await cookies();
57
- const token = (_b = (_a = cookieStore.get("session")) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;
58
- if (token === null) {
59
- return { session: null, user: null };
60
- }
61
- return await validateSessionToken(token);
62
- };
63
- /**
64
- * Invalidates a single session.
65
- */
66
- export async function invalidateSession(sessionId) {
67
- await db.delete(sessionTable).where(eq(sessionTable.id, sessionId));
68
- }
69
- /**
70
- * Invalidates all user sessions.
71
- */
72
- export async function invalidateUserSessions(userId) {
73
- await db.delete(sessionTable).where(eq(sessionTable.userId, userId));
74
- }
75
- /**
76
- * Sets the session token in a cookie.
77
- */
78
- export async function setSessionTokenCookie(token, expiresAt) {
79
- const cookieStore = await cookies();
80
- cookieStore.set("session", token, {
81
- httpOnly: true,
82
- path: "/",
83
- secure: process.env.NODE_ENV === "production",
84
- sameSite: "lax",
85
- expires: expiresAt,
86
- });
87
- }
88
- /**
89
- * Removes the session token cookie.
90
- */
91
- export async function deleteSessionTokenCookie() {
92
- const cookieStore = await cookies();
93
- cookieStore.delete("session");
94
- }
95
- /**
96
- * Generates a new random session token.
97
- */
98
- export async function generateSessionToken() {
99
- const tokenBytes = new Uint8Array(20);
100
- crypto.getRandomValues(tokenBytes);
101
- return encodeBase32LowerCaseNoPadding(tokenBytes).toLowerCase();
102
- }
103
- /**
104
- * Creates a new session in the database.
105
- */
106
- export async function createSession(token, userId, flags) {
107
- const sessionId = encodeHexLowerCase(sha256(new TextEncoder().encode(token)));
108
- const [session] = await db
109
- .insert(sessionTable)
110
- .values({
111
- id: sessionId,
112
- expiresAt: new Date(addDays(new Date(), 7)),
113
- active_organization_id: flags.activeOrganizationId,
114
- userId: userId,
115
- })
116
- .returning();
117
- return session;
118
- }
119
- /**
120
- * Signs the user out and redirects to the sign-in page.
121
- */
122
- export async function sessionSignOut() {
123
- const { session } = await getCurrentSession();
124
- if (session) {
125
- await invalidateSession(session.id);
126
- await deleteSessionTokenCookie();
127
- }
128
- redirect("/signin");
129
- }
130
- /**
131
- * Get all active sessions for a user.
132
- */
133
- export async function getUserSessions(userId, currentSessionId) {
134
- const sessions = await db
135
- .select()
136
- .from(sessionTable)
137
- .where(eq(sessionTable.userId, userId));
138
- return sessions.map((session) => ({
139
- id: session.id,
140
- createdAt: session.createdAt,
141
- expiresAt: session.expiresAt,
142
- isCurrent: session.id === currentSessionId,
143
- }));
144
- }
145
- /**
146
- * Invalidate all sessions for a user except the specified current one.
147
- */
148
- export async function invalidateOtherSessions(userId, currentSessionId) {
149
- await db
150
- .delete(sessionTable)
151
- .where(and(eq(sessionTable.userId, userId), ne(sessionTable.id, currentSessionId)));
152
- }
@@ -1,52 +0,0 @@
1
- import type { passwordResetSessionTable, sessionTable, userTable } from "../../server/database/schema";
2
- import type { UserPermission, UserRole } from "../types";
3
- export type { UserRole, UserPermission };
4
- export type User = typeof userTable.$inferSelect;
5
- export type Session = typeof sessionTable.$inferSelect & Record<string, any>;
6
- export type PasswordResetSession = typeof passwordResetSessionTable.$inferSelect & Record<string, any>;
7
- /**
8
- * Represents a user with all potential extensions.
9
- * Use this type in UI components that require data added by modules.
10
- */
11
- export type FullUser = User & Record<string, any> & {
12
- roles: UserRole[];
13
- permissions: UserPermission[];
14
- };
15
- /**
16
- * Basic session context.
17
- */
18
- export interface AuthSession {
19
- session: Session | null;
20
- user: FullUser | null;
21
- }
22
- export interface SessionFlags {
23
- [key: string]: any;
24
- }
25
- export type UserSession = {
26
- id: string;
27
- createdAt: Date;
28
- expiresAt: Date;
29
- isCurrent: boolean;
30
- [key: string]: any;
31
- };
32
- export type AuthResponse = {
33
- status: "SUCCESS";
34
- session: Session;
35
- user: FullUser;
36
- redirect?: string;
37
- } | {
38
- status: "CHALLENGE_REQUIRED";
39
- type: string;
40
- userId: string;
41
- tempToken?: string;
42
- redirect?: string;
43
- } | {
44
- status: "ERROR";
45
- message: string;
46
- redirect?: string;
47
- };
48
- export interface PasswordResetAuthSession {
49
- session: PasswordResetSession | null;
50
- user: FullUser | null;
51
- }
52
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/auth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,YAAY,EACZ,SAAS,EACV,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzD,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AAEzC,MAAM,MAAM,IAAI,GAAG,OAAO,SAAS,CAAC,YAAY,CAAC;AACjD,MAAM,MAAM,OAAO,GAAG,OAAO,YAAY,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC7E,MAAM,MAAM,oBAAoB,GAC9B,OAAO,yBAAyB,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtE;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,IAAI,GACzB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IACpB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B,CAAC;AAEJ;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1E;IACA,MAAM,EAAE,oBAAoB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACrC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;CACvB"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,12 +0,0 @@
1
- /**
2
- * Generates a random one-time code (OTP).
3
- * @param length Length of the generated code (default 6).
4
- * @returns A random uppercase base32 string.
5
- */
6
- export declare function generateRandomOTP(length?: number): string;
7
- /**
8
- * Generates a random recovery code.
9
- * @returns A random uppercase base32 string.
10
- */
11
- export declare function generateRandomRecoveryCode(): string;
12
- //# sourceMappingURL=encode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../../../src/core/auth/utils/encode.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,SAAI,GAAG,MAAM,CAIpD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAInD"}
@@ -1,20 +0,0 @@
1
- import { encodeBase32UpperCaseNoPadding } from "@oslojs/encoding";
2
- /**
3
- * Generates a random one-time code (OTP).
4
- * @param length Length of the generated code (default 6).
5
- * @returns A random uppercase base32 string.
6
- */
7
- export function generateRandomOTP(length = 6) {
8
- const bytes = new Uint8Array(5);
9
- crypto.getRandomValues(bytes);
10
- return encodeBase32UpperCaseNoPadding(bytes).substring(0, length);
11
- }
12
- /**
13
- * Generates a random recovery code.
14
- * @returns A random uppercase base32 string.
15
- */
16
- export function generateRandomRecoveryCode() {
17
- const recoveryCodeBytes = new Uint8Array(10);
18
- crypto.getRandomValues(recoveryCodeBytes);
19
- return encodeBase32UpperCaseNoPadding(recoveryCodeBytes);
20
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"encryption.d.ts","sourceRoot":"","sources":["../../../../src/core/auth/utils/encryption.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAUpD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,CAezD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAExD"}
@@ -1,62 +0,0 @@
1
- import { createCipheriv, createDecipheriv } from "node:crypto";
2
- import { DynamicBuffer } from "@oslojs/binary";
3
- import { decodeBase64 } from "@oslojs/encoding";
4
- const ENCRYPTION_KEY = process.env.ENCRYPTION_KEY;
5
- if (!ENCRYPTION_KEY) {
6
- throw new Error("ENCRYPTION_KEY environment variable is not set");
7
- }
8
- /**
9
- * The encryption key decoded from base64.
10
- */
11
- const key = decodeBase64(ENCRYPTION_KEY);
12
- /**
13
- * Encrypts data using AES-128-GCM.
14
- * @param data Data to be encrypted.
15
- * @returns Encrypted data including IV and auth tag.
16
- */
17
- export function encrypt(data) {
18
- const iv = new Uint8Array(16);
19
- crypto.getRandomValues(iv);
20
- const cipher = createCipheriv("aes-128-gcm", key, iv);
21
- const encrypted = new DynamicBuffer(0);
22
- encrypted.write(iv);
23
- encrypted.write(cipher.update(data));
24
- encrypted.write(cipher.final());
25
- encrypted.write(cipher.getAuthTag());
26
- return encrypted.bytes();
27
- }
28
- /**
29
- * Encrypts a string.
30
- * @param data String to be encrypted.
31
- * @returns Encrypted data as Uint8Array.
32
- */
33
- export function encryptString(data) {
34
- return encrypt(new TextEncoder().encode(data));
35
- }
36
- /**
37
- * Decrypts data using AES-128-GCM.
38
- * @param encrypted Encrypted data (IV + content + auth tag).
39
- * @returns Decrypted data.
40
- */
41
- export function decrypt(encrypted) {
42
- if (encrypted.byteLength < 33) {
43
- throw new Error("Invalid encrypted data length");
44
- }
45
- const iv = encrypted.slice(0, 16);
46
- const authTag = encrypted.slice(encrypted.byteLength - 16);
47
- const content = encrypted.slice(16, encrypted.byteLength - 16);
48
- const decipher = createDecipheriv("aes-128-gcm", key, iv);
49
- decipher.setAuthTag(authTag);
50
- const decrypted = new DynamicBuffer(0);
51
- decrypted.write(decipher.update(content));
52
- decrypted.write(decipher.final());
53
- return decrypted.bytes();
54
- }
55
- /**
56
- * Decrypts data to a string.
57
- * @param data Encrypted data.
58
- * @returns Odszyfrowany ciąg znaków.
59
- */
60
- export function decryptToString(data) {
61
- return new TextDecoder().decode(decrypt(data));
62
- }
@@ -1,44 +0,0 @@
1
- import { z } from "zod";
2
- export declare const loginSchema: z.ZodObject<{
3
- email: z.ZodString;
4
- password: z.ZodString;
5
- remember: z.ZodOptional<z.ZodBoolean>;
6
- }, z.core.$strip>;
7
- export declare const registerSchema: z.ZodObject<{
8
- username: z.ZodString;
9
- email: z.ZodString;
10
- password: z.ZodString;
11
- terms: z.ZodBoolean;
12
- }, z.core.$strip>;
13
- export declare const forgotPasswordSchema: z.ZodObject<{
14
- email: z.ZodString;
15
- }, z.core.$strip>;
16
- export declare const resetPasswordSchema: z.ZodObject<{
17
- password: z.ZodString;
18
- confirm: z.ZodString;
19
- }, z.core.$strip>;
20
- export declare const verifyEmailSchema: z.ZodObject<{
21
- code: z.ZodString;
22
- }, z.core.$strip>;
23
- export declare const totpSetupSchema: z.ZodObject<{
24
- code: z.ZodString;
25
- }, z.core.$strip>;
26
- export declare const totpVerifySchema: z.ZodObject<{
27
- code: z.ZodString;
28
- }, z.core.$strip>;
29
- export declare const passkeysSetupSchema: z.ZodObject<{
30
- name: z.ZodString;
31
- }, z.core.$strip>;
32
- export declare const recoveryCodeVerifySchema: z.ZodObject<{
33
- code: z.ZodString;
34
- }, z.core.$strip>;
35
- export type LoginInput = z.infer<typeof loginSchema>;
36
- export type RegisterInput = z.infer<typeof registerSchema>;
37
- export type ForgotPasswordInput = z.infer<typeof forgotPasswordSchema>;
38
- export type ResetPasswordInput = z.infer<typeof resetPasswordSchema>;
39
- export type TOTPSetupInput = z.infer<typeof totpSetupSchema>;
40
- export type TOTPVerifyInput = z.infer<typeof totpVerifySchema>;
41
- export type PasskeysSetupInput = z.infer<typeof passkeysSetupSchema>;
42
- export type VerifyEmailInput = z.infer<typeof verifyEmailSchema>;
43
- export type RecoveryVerifyInput = z.infer<typeof recoveryCodeVerifySchema>;
44
- //# sourceMappingURL=validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/core/auth/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW;;;;iBAItB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;iBAKzB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;iBAQ5B,CAAC;AAEL,eAAO,MAAM,iBAAiB;;iBAE5B,CAAC;AAGH,eAAO,MAAM,eAAe;;iBAE1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;iBAE3B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;iBAE9B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;iBAEnC,CAAC;AAGH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AACrD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC3D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACrE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC7D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC/D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACrE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACjE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
@@ -1,41 +0,0 @@
1
- import { z } from "zod";
2
- // Auth validation schemas - CLEAN (No DB dependencies for client-side)
3
- export const loginSchema = z.object({
4
- email: z.string().email("Invalid email address"),
5
- password: z.string().min(8),
6
- remember: z.boolean().optional(),
7
- });
8
- export const registerSchema = z.object({
9
- username: z.string().min(2, "Name must be at least 2 characters"),
10
- email: z.string().email("Invalid email address"),
11
- password: z.string().min(8, "Password must be at least 8 characters"),
12
- terms: z.boolean().refine((val) => val === true, "You must accept the terms"),
13
- });
14
- export const forgotPasswordSchema = z.object({
15
- email: z.string().email("Invalid email address"),
16
- });
17
- export const resetPasswordSchema = z
18
- .object({
19
- password: z.string().min(8, "Password must be at least 8 characters"),
20
- confirm: z.string(),
21
- })
22
- .refine((data) => data.password === data.confirm, {
23
- message: "Passwords do not match",
24
- path: ["confirm"],
25
- });
26
- export const verifyEmailSchema = z.object({
27
- code: z.string().min(6).max(6),
28
- });
29
- // mfa validation schemas
30
- export const totpSetupSchema = z.object({
31
- code: z.string().regex(/^\d{6}$/, "Code must be 6 digits"),
32
- });
33
- export const totpVerifySchema = z.object({
34
- code: z.string().regex(/^\d{6}$/, "Code must be 6 digits"),
35
- });
36
- export const passkeysSetupSchema = z.object({
37
- name: z.string().min(1, "Passkey name is required"),
38
- });
39
- export const recoveryCodeVerifySchema = z.object({
40
- code: z.string().min(16, "Recovery code is required").max(16),
41
- });
@@ -1,2 +0,0 @@
1
- export declare function ensureSystemInitialized(providedDb?: any): Promise<void>;
2
- //# sourceMappingURL=bootstrap.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/core/bootstrap.ts"],"names":[],"mappings":"AAQA,wBAAsB,uBAAuB,CAAC,UAAU,CAAC,EAAE,GAAG,iBAoD7D"}
@@ -1,51 +0,0 @@
1
- import { injectDb } from "../server/database/inject";
2
- import { initEmailVerification } from "./auth/email-verification";
3
- import { eventBus } from "./event-bus";
4
- import { filesystemService } from "./filesystem/index";
5
- import { LocalFileProvider } from "./filesystem/providers/local";
6
- import { notificationService } from "./notifications/service";
7
- import { isSystemInstalled } from "./setup";
8
- export async function ensureSystemInitialized(providedDb) {
9
- if (typeof window !== "undefined")
10
- return;
11
- const g = globalThis;
12
- // 1. Immediate injection if provided
13
- if (providedDb) {
14
- injectDb(providedDb);
15
- }
16
- // 2. Prevent infinite recursion and double initialization
17
- if (g.__KRYO_INITIALIZED__)
18
- return;
19
- if (g.__KRYO_INITIALIZING__)
20
- return; // Already in progress, don't block/deadlock
21
- g.__KRYO_INITIALIZING__ = true;
22
- try {
23
- console.log("[Kryo:Bootstrap] Starting system initialization...");
24
- // Check if we have DB after any possible injection
25
- if (!g.__KRYO_DB__) {
26
- console.warn("[Kryo:Bootstrap] DB not detected during bootstrap start. Trying to continue...");
27
- }
28
- // Check if system is installed before initializing modules
29
- if (await isSystemInstalled()) {
30
- // Order matters: services first, then modules (which use services)
31
- notificationService.init();
32
- await initEmailVerification();
33
- // Auto-register local filesystem provider as a fallback
34
- const local = new LocalFileProvider();
35
- filesystemService.registerProvider(local);
36
- filesystemService.setDefaultProvider(local.id);
37
- }
38
- else {
39
- console.log("[Kryo:Bootstrap] System not installed. Skipping module initialization.");
40
- }
41
- await eventBus.publish("system:start", { runtime: "nodejs" });
42
- console.log("[Kryo:Bootstrap] System initialized successfully.");
43
- g.__KRYO_INITIALIZED__ = true;
44
- }
45
- catch (error) {
46
- console.error("[Kryo:Bootstrap] Initialization failed:", error);
47
- }
48
- finally {
49
- g.__KRYO_INITIALIZING__ = false;
50
- }
51
- }
@@ -1,9 +0,0 @@
1
- export interface KryoConfig {
2
- /**
3
- * Path to the directory with local modules.
4
- * Default: "./modules"
5
- */
6
- modulesDirectory?: string;
7
- }
8
- export declare const DEFAULT_CONFIG: KryoConfig;
9
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,EAAE,UAE5B,CAAC"}