sonamu 0.9.2 → 0.9.4

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 (84) hide show
  1. package/dist/api/config.d.ts +1 -2
  2. package/dist/api/config.d.ts.map +1 -1
  3. package/dist/api/config.js +1 -1
  4. package/dist/api/sonamu.d.ts.map +1 -1
  5. package/dist/api/sonamu.js +10 -1
  6. package/dist/auth/audit-log/builders.d.ts +216 -0
  7. package/dist/auth/audit-log/builders.d.ts.map +1 -0
  8. package/dist/auth/audit-log/builders.js +307 -0
  9. package/dist/auth/audit-log/events.d.ts +143 -0
  10. package/dist/auth/audit-log/events.d.ts.map +1 -0
  11. package/dist/auth/audit-log/events.js +74 -0
  12. package/dist/auth/audit-log/plugin.d.ts +11 -0
  13. package/dist/auth/audit-log/plugin.d.ts.map +1 -0
  14. package/dist/auth/audit-log/plugin.js +427 -0
  15. package/dist/auth/audit-log-ingestor.d.ts +9 -0
  16. package/dist/auth/audit-log-ingestor.d.ts.map +1 -0
  17. package/dist/auth/audit-log-ingestor.js +194 -0
  18. package/dist/auth/index.d.ts +3 -0
  19. package/dist/auth/index.d.ts.map +1 -1
  20. package/dist/auth/index.js +4 -2
  21. package/dist/auth/plugins/entity-definitions/admin.d.ts +1 -1
  22. package/dist/auth/plugins/entity-definitions/admin.js +4 -4
  23. package/dist/auth/plugins/entity-definitions/audit-log.d.ts +12 -0
  24. package/dist/auth/plugins/entity-definitions/audit-log.d.ts.map +1 -0
  25. package/dist/auth/plugins/entity-definitions/audit-log.js +291 -0
  26. package/dist/auth/plugins/entity-definitions/index.d.ts +1 -0
  27. package/dist/auth/plugins/entity-definitions/index.d.ts.map +1 -1
  28. package/dist/auth/plugins/entity-definitions/index.js +5 -3
  29. package/dist/auth/plugins/entity-definitions/types.d.ts +1 -1
  30. package/dist/auth/plugins/entity-definitions/types.d.ts.map +1 -1
  31. package/dist/bin/fixture.d.ts.map +1 -1
  32. package/dist/bin/fixture.js +111 -1
  33. package/dist/database/_batch_update.d.ts +1 -1
  34. package/dist/database/_batch_update.js +2 -2
  35. package/dist/entity/entity-manager.d.ts.map +1 -1
  36. package/dist/entity/entity-manager.js +14 -4
  37. package/dist/index.js +4 -2
  38. package/dist/storage/buffered-file.d.ts +1 -1
  39. package/dist/storage/buffered-file.js +2 -2
  40. package/dist/syncer/syncer.d.ts.map +1 -1
  41. package/dist/syncer/syncer.js +2 -9
  42. package/dist/template/implementations/entry-server.template.js +3 -2
  43. package/dist/template/implementations/generated.template.d.ts.map +1 -1
  44. package/dist/template/implementations/generated.template.js +2 -1
  45. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
  46. package/dist/template/implementations/generated_sso.template.js +2 -1
  47. package/dist/template/implementations/queries.template.d.ts.map +1 -1
  48. package/dist/template/implementations/queries.template.js +3 -1
  49. package/dist/template/implementations/sd.template.js +3 -2
  50. package/dist/template/implementations/services.template.d.ts.map +1 -1
  51. package/dist/template/implementations/services.template.js +44 -7
  52. package/dist/template/zod-converter.d.ts.map +1 -1
  53. package/dist/template/zod-converter.js +2 -2
  54. package/dist/ui-web/assets/{index-CfgbCoOJ.js → index-C5KUjXm0.js} +48 -45
  55. package/dist/ui-web/index.html +1 -1
  56. package/dist/utils/fs-utils.d.ts.map +1 -1
  57. package/dist/utils/fs-utils.js +4 -4
  58. package/package.json +3 -3
  59. package/src/api/config.ts +1 -2
  60. package/src/api/sonamu.ts +14 -0
  61. package/src/auth/audit-log/builders.ts +791 -0
  62. package/src/auth/audit-log/events.ts +149 -0
  63. package/src/auth/audit-log/plugin.ts +913 -0
  64. package/src/auth/audit-log-ingestor.ts +233 -0
  65. package/src/auth/index.ts +3 -0
  66. package/src/auth/plugins/entity-definitions/admin.ts +3 -3
  67. package/src/auth/plugins/entity-definitions/audit-log.ts +171 -0
  68. package/src/auth/plugins/entity-definitions/index.ts +3 -0
  69. package/src/auth/plugins/entity-definitions/types.ts +2 -1
  70. package/src/bin/fixture.ts +143 -0
  71. package/src/database/_batch_update.ts +1 -1
  72. package/src/entity/entity-manager.ts +10 -3
  73. package/src/shared/app.shared.ts.txt +2 -3
  74. package/src/shared/web.shared.ts.txt +2 -2
  75. package/src/storage/buffered-file.ts +1 -1
  76. package/src/syncer/syncer.ts +1 -11
  77. package/src/template/implementations/entry-server.template.ts +1 -1
  78. package/src/template/implementations/generated.template.ts +1 -0
  79. package/src/template/implementations/generated_sso.template.ts +1 -0
  80. package/src/template/implementations/queries.template.ts +10 -1
  81. package/src/template/implementations/sd.template.ts +1 -1
  82. package/src/template/implementations/services.template.ts +62 -6
  83. package/src/template/zod-converter.ts +2 -1
  84. package/src/utils/fs-utils.ts +6 -4
@@ -0,0 +1,194 @@
1
+ import { createHash } from "node:crypto";
2
+
3
+ //#region src/auth/audit-log-ingestor.ts
4
+ const AUDIT_EVENT_SOURCE = "better_auth";
5
+ const AUDIT_EVENT_SOURCE_VERSION = "better-auth|@better-auth/infra";
6
+ const SESSION_EVENT_TYPES = new Set([
7
+ "user_signed_in",
8
+ "user_signed_out",
9
+ "user_sign_in_failed",
10
+ "session_created",
11
+ "session_revoked",
12
+ "all_sessions_revoked",
13
+ "user_impersonated",
14
+ "user_impersonated_stopped"
15
+ ]);
16
+ const ACCOUNT_EVENT_TYPES = new Set([
17
+ "account_linked",
18
+ "account_unlinked",
19
+ "password_changed",
20
+ "two_factor_enabled",
21
+ "two_factor_disabled",
22
+ "two_factor_verified"
23
+ ]);
24
+ const VERIFICATION_EVENT_TYPES = new Set([
25
+ "email_verification_sent",
26
+ "password_reset_requested",
27
+ "password_reset_completed"
28
+ ]);
29
+ const SECURITY_EVENT_TYPES = new Set([
30
+ "security_blocked",
31
+ "security_allowed",
32
+ "security_challenged",
33
+ "security_stale_account"
34
+ ]);
35
+ const USER_EVENT_TYPES = new Set([
36
+ "user_created",
37
+ "profile_updated",
38
+ "profile_image_updated",
39
+ "email_verified",
40
+ "user_banned",
41
+ "user_unbanned",
42
+ "user_deleted"
43
+ ]);
44
+ function pickString(source, key) {
45
+ const value = source[key];
46
+ return typeof value === "string" ? value : null;
47
+ }
48
+ function pickFirstString(source, keys) {
49
+ for (const key of keys) {
50
+ const value = pickString(source, key);
51
+ if (value !== null) {
52
+ return value;
53
+ }
54
+ }
55
+ return null;
56
+ }
57
+ function parseOccurredAt(raw) {
58
+ if (raw instanceof Date && !Number.isNaN(raw.getTime())) {
59
+ return raw;
60
+ }
61
+ if (typeof raw === "string") {
62
+ const parsed = new Date(raw);
63
+ if (!Number.isNaN(parsed.getTime())) {
64
+ return parsed;
65
+ }
66
+ }
67
+ return new Date();
68
+ }
69
+ function classifyCategory(eventType) {
70
+ if (eventType.startsWith("organization_")) {
71
+ return "organization";
72
+ }
73
+ if (SESSION_EVENT_TYPES.has(eventType)) {
74
+ return "session";
75
+ }
76
+ if (ACCOUNT_EVENT_TYPES.has(eventType)) {
77
+ return "account";
78
+ }
79
+ if (VERIFICATION_EVENT_TYPES.has(eventType)) {
80
+ return "verification";
81
+ }
82
+ if (SECURITY_EVENT_TYPES.has(eventType)) {
83
+ return "security";
84
+ }
85
+ if (USER_EVENT_TYPES.has(eventType)) {
86
+ return "user";
87
+ }
88
+ return "user";
89
+ }
90
+ function computeDedupeKey(parts) {
91
+ const norm = (v) => v ?? "";
92
+ const raw = [
93
+ parts.source,
94
+ parts.event_type,
95
+ parts.event_key,
96
+ norm(parts.actor_user_id),
97
+ norm(parts.subject_user_id),
98
+ norm(parts.organization_id),
99
+ norm(parts.team_id),
100
+ norm(parts.session_id),
101
+ norm(parts.identifier),
102
+ norm(parts.reason),
103
+ norm(parts.action),
104
+ parts.occurred_at.toISOString()
105
+ ].join("|");
106
+ return createHash("sha256").update(raw).digest("hex");
107
+ }
108
+ /**
109
+ * sonamuAuditLog 플러그인이 구성한 AuditLogEvent를 audit_events 테이블에 적재합니다.
110
+ * ON CONFLICT (dedupe_key) DO NOTHING으로 중복을 silent 무시합니다.
111
+ * auth.plugins에 sonamuAuditLog() 추가 시 sonamu 내부에서 자동으로 호출됩니다.
112
+ */
113
+ async function ingestAuditEvent(db, event) {
114
+ const eventData = event.eventData;
115
+ const occurred_at = parseOccurredAt(eventData["occurredAt"]);
116
+ const actor_user_id = pickString(eventData, "triggeredBy");
117
+ const subject_user_id = pickFirstString(eventData, [
118
+ "userId",
119
+ "userid",
120
+ "acceptedById",
121
+ "rejectedById"
122
+ ]);
123
+ const organization_id = pickString(eventData, "organizationId");
124
+ const team_id = pickFirstString(eventData, ["teamId", "inviteeTeamId"]);
125
+ const session_id = pickString(eventData, "sessionId");
126
+ const provider_id = pickString(eventData, "providerId");
127
+ const login_method = pickString(eventData, "loginMethod");
128
+ const identifier = pickFirstString(eventData, [
129
+ "identifier",
130
+ "userEmail",
131
+ "memberEmail",
132
+ "inviteeEmail",
133
+ "acceptedByEmail",
134
+ "rejectedByEmail"
135
+ ]);
136
+ const visitor_id = pickString(eventData, "visitorId");
137
+ const reason = pickFirstString(eventData, ["reason", "banReason"]);
138
+ const action = pickString(eventData, "action");
139
+ const trigger_context = pickString(eventData, "triggerContext");
140
+ const user_agent = pickString(eventData, "userAgent");
141
+ const ip_address = event.ipAddress ?? null;
142
+ const city = event.city ?? null;
143
+ const country = event.country ?? null;
144
+ const country_code = event.countryCode ?? null;
145
+ const category = classifyCategory(event.eventType);
146
+ const dedupe_key = computeDedupeKey({
147
+ source: AUDIT_EVENT_SOURCE,
148
+ event_type: event.eventType,
149
+ event_key: event.eventKey,
150
+ actor_user_id,
151
+ subject_user_id,
152
+ organization_id,
153
+ team_id,
154
+ session_id,
155
+ identifier,
156
+ reason,
157
+ action,
158
+ occurred_at
159
+ });
160
+ const inserted = await db("audit_events").insert({
161
+ source: AUDIT_EVENT_SOURCE,
162
+ source_version: AUDIT_EVENT_SOURCE_VERSION,
163
+ category,
164
+ event_type: event.eventType,
165
+ event_key: event.eventKey,
166
+ dedupe_key,
167
+ actor_user_id,
168
+ subject_user_id,
169
+ organization_id,
170
+ team_id,
171
+ session_id,
172
+ provider_id,
173
+ login_method,
174
+ identifier,
175
+ visitor_id,
176
+ reason,
177
+ action,
178
+ trigger_context,
179
+ ip_address,
180
+ country_code,
181
+ country,
182
+ city,
183
+ user_agent,
184
+ payload_json: eventData,
185
+ occurred_at
186
+ }).onConflict("dedupe_key").ignore().returning("dedupe_key");
187
+ if (inserted.length === 0) {
188
+ return;
189
+ }
190
+ }
191
+
192
+ //#endregion
193
+ export { ingestAuditEvent };
194
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLWluZ2VzdG9yLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoL2F1ZGl0LWxvZy1pbmdlc3Rvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5cbmltcG9ydCB7IHR5cGUgQXVkaXRMb2dFdmVudCB9IGZyb20gXCIuL2F1ZGl0LWxvZy9ldmVudHNcIjtcblxuY29uc3QgQVVESVRfRVZFTlRfU09VUkNFID0gXCJiZXR0ZXJfYXV0aFwiO1xuY29uc3QgQVVESVRfRVZFTlRfU09VUkNFX1ZFUlNJT04gPSBcImJldHRlci1hdXRofEBiZXR0ZXItYXV0aC9pbmZyYVwiO1xuXG5jb25zdCBTRVNTSU9OX0VWRU5UX1RZUEVTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgXCJ1c2VyX3NpZ25lZF9pblwiLFxuICBcInVzZXJfc2lnbmVkX291dFwiLFxuICBcInVzZXJfc2lnbl9pbl9mYWlsZWRcIixcbiAgXCJzZXNzaW9uX2NyZWF0ZWRcIixcbiAgXCJzZXNzaW9uX3Jldm9rZWRcIixcbiAgXCJhbGxfc2Vzc2lvbnNfcmV2b2tlZFwiLFxuICBcInVzZXJfaW1wZXJzb25hdGVkXCIsXG4gIFwidXNlcl9pbXBlcnNvbmF0ZWRfc3RvcHBlZFwiLFxuXSk7XG5cbmNvbnN0IEFDQ09VTlRfRVZFTlRfVFlQRVMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICBcImFjY291bnRfbGlua2VkXCIsXG4gIFwiYWNjb3VudF91bmxpbmtlZFwiLFxuICBcInBhc3N3b3JkX2NoYW5nZWRcIixcblxuICAvLyBAYmV0dGVyLWF1dGgvaW5mcmFAMC4xLjE0IOq4sOykgCBFVkVOVF9UWVBFUyDsg4HsiJjsl5DripQg7KCV7J2Y65CY7Ja0IOyeiOycvOuCmCDsi6TsoJwgdHJhY2tFdmVudCgpIO2YuOy2nOydtCDsl4bripQg66+46rWs7ZiEIOydtOuypO2KuOyehFxuICAvLyDtlqXtm4Qg67KE7KCE7JeQ7IScIGVtaXTrkKAg6rK97Jqw66W8IOuMgOu5hO2VtCBhY2NvdW5066GcIOyehOyLnCDrk7HroZ1cbiAgXCJ0d29fZmFjdG9yX2VuYWJsZWRcIixcbiAgXCJ0d29fZmFjdG9yX2Rpc2FibGVkXCIsXG4gIFwidHdvX2ZhY3Rvcl92ZXJpZmllZFwiLFxuXSk7XG5cbmNvbnN0IFZFUklGSUNBVElPTl9FVkVOVF9UWVBFUyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gIFwiZW1haWxfdmVyaWZpY2F0aW9uX3NlbnRcIixcbiAgXCJwYXNzd29yZF9yZXNldF9yZXF1ZXN0ZWRcIixcbiAgXCJwYXNzd29yZF9yZXNldF9jb21wbGV0ZWRcIixcbl0pO1xuXG5jb25zdCBTRUNVUklUWV9FVkVOVF9UWVBFUyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gIFwic2VjdXJpdHlfYmxvY2tlZFwiLFxuICBcInNlY3VyaXR5X2FsbG93ZWRcIixcbiAgXCJzZWN1cml0eV9jaGFsbGVuZ2VkXCIsXG4gIFwic2VjdXJpdHlfc3RhbGVfYWNjb3VudFwiLFxuXSk7XG5cbmNvbnN0IFVTRVJfRVZFTlRfVFlQRVMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICBcInVzZXJfY3JlYXRlZFwiLFxuICBcInByb2ZpbGVfdXBkYXRlZFwiLFxuICBcInByb2ZpbGVfaW1hZ2VfdXBkYXRlZFwiLFxuICBcImVtYWlsX3ZlcmlmaWVkXCIsXG4gIFwidXNlcl9iYW5uZWRcIixcbiAgXCJ1c2VyX3VuYmFubmVkXCIsXG4gIFwidXNlcl9kZWxldGVkXCIsXG5dKTtcblxuZnVuY3Rpb24gcGlja1N0cmluZyhzb3VyY2U6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCB2YWx1ZSA9IHNvdXJjZVtrZXldO1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUgOiBudWxsO1xufVxuXG5mdW5jdGlvbiBwaWNrRmlyc3RTdHJpbmcoc291cmNlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5czogcmVhZG9ubHkgc3RyaW5nW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGNvbnN0IHZhbHVlID0gcGlja1N0cmluZyhzb3VyY2UsIGtleSk7XG4gICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBwYXJzZU9jY3VycmVkQXQocmF3OiB1bmtub3duKTogRGF0ZSB7XG4gIGlmIChyYXcgaW5zdGFuY2VvZiBEYXRlICYmICFOdW1iZXIuaXNOYU4ocmF3LmdldFRpbWUoKSkpIHtcbiAgICByZXR1cm4gcmF3O1xuICB9XG4gIGlmICh0eXBlb2YgcmF3ID09PSBcInN0cmluZ1wiKSB7XG4gICAgY29uc3QgcGFyc2VkID0gbmV3IERhdGUocmF3KTtcbiAgICBpZiAoIU51bWJlci5pc05hTihwYXJzZWQuZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuIHBhcnNlZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRlKCk7XG59XG5cbmZ1bmN0aW9uIGNsYXNzaWZ5Q2F0ZWdvcnkoXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuKTogXCJ1c2VyXCIgfCBcInNlc3Npb25cIiB8IFwiYWNjb3VudFwiIHwgXCJ2ZXJpZmljYXRpb25cIiB8IFwib3JnYW5pemF0aW9uXCIgfCBcInNlY3VyaXR5XCIge1xuICBpZiAoZXZlbnRUeXBlLnN0YXJ0c1dpdGgoXCJvcmdhbml6YXRpb25fXCIpKSB7XG4gICAgcmV0dXJuIFwib3JnYW5pemF0aW9uXCI7XG4gIH1cbiAgaWYgKFNFU1NJT05fRVZFTlRfVFlQRVMuaGFzKGV2ZW50VHlwZSkpIHtcbiAgICByZXR1cm4gXCJzZXNzaW9uXCI7XG4gIH1cbiAgaWYgKEFDQ09VTlRfRVZFTlRfVFlQRVMuaGFzKGV2ZW50VHlwZSkpIHtcbiAgICByZXR1cm4gXCJhY2NvdW50XCI7XG4gIH1cbiAgaWYgKFZFUklGSUNBVElPTl9FVkVOVF9UWVBFUy5oYXMoZXZlbnRUeXBlKSkge1xuICAgIHJldHVybiBcInZlcmlmaWNhdGlvblwiO1xuICB9XG4gIGlmIChTRUNVUklUWV9FVkVOVF9UWVBFUy5oYXMoZXZlbnRUeXBlKSkge1xuICAgIHJldHVybiBcInNlY3VyaXR5XCI7XG4gIH1cbiAgaWYgKFVTRVJfRVZFTlRfVFlQRVMuaGFzKGV2ZW50VHlwZSkpIHtcbiAgICByZXR1cm4gXCJ1c2VyXCI7XG4gIH1cbiAgcmV0dXJuIFwidXNlclwiO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlRGVkdXBlS2V5KHBhcnRzOiB7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBldmVudF90eXBlOiBzdHJpbmc7XG4gIGV2ZW50X2tleTogc3RyaW5nO1xuICBhY3Rvcl91c2VyX2lkOiBzdHJpbmcgfCBudWxsO1xuICBzdWJqZWN0X3VzZXJfaWQ6IHN0cmluZyB8IG51bGw7XG4gIG9yZ2FuaXphdGlvbl9pZDogc3RyaW5nIHwgbnVsbDtcbiAgdGVhbV9pZDogc3RyaW5nIHwgbnVsbDtcbiAgc2Vzc2lvbl9pZDogc3RyaW5nIHwgbnVsbDtcbiAgaWRlbnRpZmllcjogc3RyaW5nIHwgbnVsbDtcbiAgcmVhc29uOiBzdHJpbmcgfCBudWxsO1xuICBhY3Rpb246IHN0cmluZyB8IG51bGw7XG4gIG9jY3VycmVkX2F0OiBEYXRlO1xufSk6IHN0cmluZyB7XG4gIGNvbnN0IG5vcm0gPSAodjogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyA9PiB2ID8/IFwiXCI7XG4gIGNvbnN0IHJhdyA9IFtcbiAgICBwYXJ0cy5zb3VyY2UsXG4gICAgcGFydHMuZXZlbnRfdHlwZSxcbiAgICBwYXJ0cy5ldmVudF9rZXksXG4gICAgbm9ybShwYXJ0cy5hY3Rvcl91c2VyX2lkKSxcbiAgICBub3JtKHBhcnRzLnN1YmplY3RfdXNlcl9pZCksXG4gICAgbm9ybShwYXJ0cy5vcmdhbml6YXRpb25faWQpLFxuICAgIG5vcm0ocGFydHMudGVhbV9pZCksXG4gICAgbm9ybShwYXJ0cy5zZXNzaW9uX2lkKSxcbiAgICBub3JtKHBhcnRzLmlkZW50aWZpZXIpLFxuICAgIG5vcm0ocGFydHMucmVhc29uKSxcbiAgICBub3JtKHBhcnRzLmFjdGlvbiksXG4gICAgcGFydHMub2NjdXJyZWRfYXQudG9JU09TdHJpbmcoKSxcbiAgXS5qb2luKFwifFwiKTtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKHJhdykuZGlnZXN0KFwiaGV4XCIpO1xufVxuXG4vKipcbiAqIHNvbmFtdUF1ZGl0TG9nIO2UjOufrOq3uOyduOydtCDqtazshLHtlZwgQXVkaXRMb2dFdmVudOulvCBhdWRpdF9ldmVudHMg7YWM7J2067iU7JeQIOyggeyerO2VqeuLiOuLpC5cbiAqIE9OIENPTkZMSUNUIChkZWR1cGVfa2V5KSBETyBOT1RISU5H7Jy866GcIOykkeuzteydhCBzaWxlbnQg66y07Iuc7ZWp64uI64ukLlxuICogYXV0aC5wbHVnaW5z7JeQIHNvbmFtdUF1ZGl0TG9nKCkg7LaU6rCAIOyLnCBzb25hbXUg64K067aA7JeQ7IScIOyekOuPmeycvOuhnCDtmLjstpzrkKnri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbmdlc3RBdWRpdEV2ZW50KGRiOiBLbmV4LCBldmVudDogQXVkaXRMb2dFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBldmVudERhdGEgPSBldmVudC5ldmVudERhdGE7XG4gIGNvbnN0IG9jY3VycmVkX2F0ID0gcGFyc2VPY2N1cnJlZEF0KGV2ZW50RGF0YVtcIm9jY3VycmVkQXRcIl0pO1xuXG4gIGNvbnN0IGFjdG9yX3VzZXJfaWQgPSBwaWNrU3RyaW5nKGV2ZW50RGF0YSwgXCJ0cmlnZ2VyZWRCeVwiKTtcbiAgY29uc3Qgc3ViamVjdF91c2VyX2lkID0gcGlja0ZpcnN0U3RyaW5nKGV2ZW50RGF0YSwgW1xuICAgIFwidXNlcklkXCIsXG4gICAgXCJ1c2VyaWRcIixcbiAgICBcImFjY2VwdGVkQnlJZFwiLFxuICAgIFwicmVqZWN0ZWRCeUlkXCIsXG4gIF0pO1xuICBjb25zdCBvcmdhbml6YXRpb25faWQgPSBwaWNrU3RyaW5nKGV2ZW50RGF0YSwgXCJvcmdhbml6YXRpb25JZFwiKTtcbiAgY29uc3QgdGVhbV9pZCA9IHBpY2tGaXJzdFN0cmluZyhldmVudERhdGEsIFtcInRlYW1JZFwiLCBcImludml0ZWVUZWFtSWRcIl0pO1xuICBjb25zdCBzZXNzaW9uX2lkID0gcGlja1N0cmluZyhldmVudERhdGEsIFwic2Vzc2lvbklkXCIpO1xuICBjb25zdCBwcm92aWRlcl9pZCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcInByb3ZpZGVySWRcIik7XG4gIGNvbnN0IGxvZ2luX21ldGhvZCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcImxvZ2luTWV0aG9kXCIpO1xuICBjb25zdCBpZGVudGlmaWVyID0gcGlja0ZpcnN0U3RyaW5nKGV2ZW50RGF0YSwgW1xuICAgIFwiaWRlbnRpZmllclwiLFxuICAgIFwidXNlckVtYWlsXCIsXG4gICAgXCJtZW1iZXJFbWFpbFwiLFxuICAgIFwiaW52aXRlZUVtYWlsXCIsXG4gICAgXCJhY2NlcHRlZEJ5RW1haWxcIixcbiAgICBcInJlamVjdGVkQnlFbWFpbFwiLFxuICBdKTtcbiAgY29uc3QgdmlzaXRvcl9pZCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcInZpc2l0b3JJZFwiKTtcbiAgY29uc3QgcmVhc29uID0gcGlja0ZpcnN0U3RyaW5nKGV2ZW50RGF0YSwgW1wicmVhc29uXCIsIFwiYmFuUmVhc29uXCJdKTtcbiAgY29uc3QgYWN0aW9uID0gcGlja1N0cmluZyhldmVudERhdGEsIFwiYWN0aW9uXCIpO1xuICBjb25zdCB0cmlnZ2VyX2NvbnRleHQgPSBwaWNrU3RyaW5nKGV2ZW50RGF0YSwgXCJ0cmlnZ2VyQ29udGV4dFwiKTtcbiAgY29uc3QgdXNlcl9hZ2VudCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcInVzZXJBZ2VudFwiKTtcblxuICBjb25zdCBpcF9hZGRyZXNzID0gZXZlbnQuaXBBZGRyZXNzID8/IG51bGw7XG4gIGNvbnN0IGNpdHkgPSBldmVudC5jaXR5ID8/IG51bGw7XG4gIGNvbnN0IGNvdW50cnkgPSBldmVudC5jb3VudHJ5ID8/IG51bGw7XG4gIGNvbnN0IGNvdW50cnlfY29kZSA9IGV2ZW50LmNvdW50cnlDb2RlID8/IG51bGw7XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSBjbGFzc2lmeUNhdGVnb3J5KGV2ZW50LmV2ZW50VHlwZSk7XG4gIGNvbnN0IGRlZHVwZV9rZXkgPSBjb21wdXRlRGVkdXBlS2V5KHtcbiAgICBzb3VyY2U6IEFVRElUX0VWRU5UX1NPVVJDRSxcbiAgICBldmVudF90eXBlOiBldmVudC5ldmVudFR5cGUsXG4gICAgZXZlbnRfa2V5OiBldmVudC5ldmVudEtleSxcbiAgICBhY3Rvcl91c2VyX2lkLFxuICAgIHN1YmplY3RfdXNlcl9pZCxcbiAgICBvcmdhbml6YXRpb25faWQsXG4gICAgdGVhbV9pZCxcbiAgICBzZXNzaW9uX2lkLFxuICAgIGlkZW50aWZpZXIsXG4gICAgcmVhc29uLFxuICAgIGFjdGlvbixcbiAgICBvY2N1cnJlZF9hdCxcbiAgfSk7XG5cbiAgLy8gT04gQ09ORkxJQ1QgRE8gTk9USElORzogZGVkdXBlX2tleSBVTklRVUUg7JyE67CY7J2EIHNpbGVudCDrrLTsi5wuXG4gIC8vIHRyeS9jYXRjaCDrsKnsi53snYAgUEcg7Luk64Sl7IWY7J2EIGFib3J0ZWQg7IOB7YOc66GcIOunjOuTnOuvgOuhnCDsgqzsmqntlZjsp4Ag7JWK64qU64ukLlxuICBjb25zdCBpbnNlcnRlZCA9IGF3YWl0IGRiKFwiYXVkaXRfZXZlbnRzXCIpXG4gICAgLmluc2VydCh7XG4gICAgICBzb3VyY2U6IEFVRElUX0VWRU5UX1NPVVJDRSxcbiAgICAgIHNvdXJjZV92ZXJzaW9uOiBBVURJVF9FVkVOVF9TT1VSQ0VfVkVSU0lPTixcbiAgICAgIGNhdGVnb3J5LFxuICAgICAgZXZlbnRfdHlwZTogZXZlbnQuZXZlbnRUeXBlLFxuICAgICAgZXZlbnRfa2V5OiBldmVudC5ldmVudEtleSxcbiAgICAgIGRlZHVwZV9rZXksXG4gICAgICBhY3Rvcl91c2VyX2lkLFxuICAgICAgc3ViamVjdF91c2VyX2lkLFxuICAgICAgb3JnYW5pemF0aW9uX2lkLFxuICAgICAgdGVhbV9pZCxcbiAgICAgIHNlc3Npb25faWQsXG4gICAgICBwcm92aWRlcl9pZCxcbiAgICAgIGxvZ2luX21ldGhvZCxcbiAgICAgIGlkZW50aWZpZXIsXG4gICAgICB2aXNpdG9yX2lkLFxuICAgICAgcmVhc29uLFxuICAgICAgYWN0aW9uLFxuICAgICAgdHJpZ2dlcl9jb250ZXh0LFxuICAgICAgaXBfYWRkcmVzcyxcbiAgICAgIGNvdW50cnlfY29kZSxcbiAgICAgIGNvdW50cnksXG4gICAgICBjaXR5LFxuICAgICAgdXNlcl9hZ2VudCxcbiAgICAgIHBheWxvYWRfanNvbjogZXZlbnREYXRhLFxuICAgICAgb2NjdXJyZWRfYXQsXG4gICAgfSlcbiAgICAub25Db25mbGljdChcImRlZHVwZV9rZXlcIilcbiAgICAuaWdub3JlKClcbiAgICAucmV0dXJuaW5nKFwiZGVkdXBlX2tleVwiKTtcblxuICBpZiAoaW5zZXJ0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuOyAvLyBzaWxlbnQgZGVkdXBlXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBTUEsTUFBTSxxQkFBcUI7QUFDM0IsTUFBTSw2QkFBNkI7QUFFbkMsTUFBTSxzQkFBc0IsSUFBSSxJQUFZO0NBQzFDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDRCxDQUFDO0FBRUYsTUFBTSxzQkFBc0IsSUFBSSxJQUFZO0NBQzFDO0NBQ0E7Q0FDQTtDQUlBO0NBQ0E7Q0FDQTtDQUNELENBQUM7QUFFRixNQUFNLDJCQUEyQixJQUFJLElBQVk7Q0FDL0M7Q0FDQTtDQUNBO0NBQ0QsQ0FBQztBQUVGLE1BQU0sdUJBQXVCLElBQUks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
@@ -1,5 +1,8 @@
1
1
  export type { GenerateBetterAuthEntitiesOptions } from "./auth-generator";
2
2
  export { generateBetterAuthEntities } from "./auth-generator";
3
+ export { ingestAuditEvent } from "./audit-log-ingestor";
4
+ export { type AuditLogEvent } from "./audit-log/events";
5
+ export { sonamuAuditLog } from "./audit-log/plugin";
3
6
  export { BASE_FIELD_MAPPINGS, betterAuthV1 } from "./better-auth-entities";
4
7
  export { sonamuKnexAdapter } from "./knex-adapter";
5
8
  export * from "./plugins";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iCAAiC,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iCAAiC,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,cAAc,WAAW,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import { BASE_FIELD_MAPPINGS, betterAuthV1, init_better_auth_entities } from "./better-auth-entities.js";
2
+ import { ingestAuditEvent } from "./audit-log-ingestor.js";
3
+ import { sonamuAuditLog } from "./audit-log/plugin.js";
2
4
  import { generateBetterAuthEntities } from "./auth-generator.js";
3
5
  import { init_knex_adapter, sonamuKnexAdapter } from "./knex-adapter.js";
4
6
  import { ADMIN_SCHEMA, admin } from "./plugins/wrappers/admin.js";
@@ -18,5 +20,5 @@ init_better_auth_entities();
18
20
  init_knex_adapter();
19
21
 
20
22
  //#endregion
21
- export { ADMIN_SCHEMA, ANONYMOUS_SCHEMA, API_KEY_SCHEMA, BASE_FIELD_MAPPINGS, JWT_SCHEMA, ORGANIZATION_SCHEMA, PASSKEY_SCHEMA, PHONE_NUMBER_SCHEMA, SSO_SCHEMA, TWO_FACTOR_SCHEMA, USERNAME_SCHEMA, admin, anonymous, apiKey, betterAuthV1, generateBetterAuthEntities, jwt, organization, passkey, phoneNumber, sonamuKnexAdapter, sso, twoFactor, username };
22
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F1dGgvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgeyBHZW5lcmF0ZUJldHRlckF1dGhFbnRpdGllc09wdGlvbnMgfSBmcm9tIFwiLi9hdXRoLWdlbmVyYXRvclwiO1xuZXhwb3J0IHsgZ2VuZXJhdGVCZXR0ZXJBdXRoRW50aXRpZXMgfSBmcm9tIFwiLi9hdXRoLWdlbmVyYXRvclwiO1xuZXhwb3J0IHsgQkFTRV9GSUVMRF9NQVBQSU5HUywgYmV0dGVyQXV0aFYxIH0gZnJvbSBcIi4vYmV0dGVyLWF1dGgtZW50aXRpZXNcIjtcbmV4cG9ydCB7IHNvbmFtdUtuZXhBZGFwdGVyIH0gZnJvbSBcIi4va25leC1hZGFwdGVyXCI7XG5cbi8vIOyZuOu2gOuhnOuKlCB3cmFwcGVyc+unjCBleHBvcnQgKGFkbWluLCB0d29GYWN0b3Ig65OxIOuemO2NvCDtlajsiJjsmYAgU0NIRU1BKVxuZXhwb3J0ICogZnJvbSBcIi4vcGx1Z2luc1wiO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OzJCQUUyRTttQkFDeEIifQ==
23
+ export { ADMIN_SCHEMA, ANONYMOUS_SCHEMA, API_KEY_SCHEMA, BASE_FIELD_MAPPINGS, JWT_SCHEMA, ORGANIZATION_SCHEMA, PASSKEY_SCHEMA, PHONE_NUMBER_SCHEMA, SSO_SCHEMA, TWO_FACTOR_SCHEMA, USERNAME_SCHEMA, admin, anonymous, apiKey, betterAuthV1, generateBetterAuthEntities, ingestAuditEvent, jwt, organization, passkey, phoneNumber, sonamuAuditLog, sonamuKnexAdapter, sso, twoFactor, username };
24
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F1dGgvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgeyBHZW5lcmF0ZUJldHRlckF1dGhFbnRpdGllc09wdGlvbnMgfSBmcm9tIFwiLi9hdXRoLWdlbmVyYXRvclwiO1xuZXhwb3J0IHsgZ2VuZXJhdGVCZXR0ZXJBdXRoRW50aXRpZXMgfSBmcm9tIFwiLi9hdXRoLWdlbmVyYXRvclwiO1xuZXhwb3J0IHsgaW5nZXN0QXVkaXRFdmVudCB9IGZyb20gXCIuL2F1ZGl0LWxvZy1pbmdlc3RvclwiO1xuZXhwb3J0IHsgdHlwZSBBdWRpdExvZ0V2ZW50IH0gZnJvbSBcIi4vYXVkaXQtbG9nL2V2ZW50c1wiO1xuZXhwb3J0IHsgc29uYW11QXVkaXRMb2cgfSBmcm9tIFwiLi9hdWRpdC1sb2cvcGx1Z2luXCI7XG5leHBvcnQgeyBCQVNFX0ZJRUxEX01BUFBJTkdTLCBiZXR0ZXJBdXRoVjEgfSBmcm9tIFwiLi9iZXR0ZXItYXV0aC1lbnRpdGllc1wiO1xuZXhwb3J0IHsgc29uYW11S25leEFkYXB0ZXIgfSBmcm9tIFwiLi9rbmV4LWFkYXB0ZXJcIjtcblxuLy8g7Jm467aA66Gc64qUIHdyYXBwZXJz66eMIGV4cG9ydCAoYWRtaW4sIHR3b0ZhY3RvciDrk7Eg656Y7Y28IO2VqOyImOyZgCBTQ0hFTUEpXG5leHBvcnQgKiBmcm9tIFwiLi9wbHVnaW5zXCI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQkFLMkU7bUJBQ3hCIn0=
@@ -9,7 +9,7 @@ import { type BetterAuthEntityDef } from "./types";
9
9
  * - role: 사용자 역할 (기본값: "user")
10
10
  * - banned: 차단 여부
11
11
  * - ban_reason: 차단 사유
12
- * - ban_expires: 차단 만료 시간 (Unix timestamp)
12
+ * - ban_expires: 차단 만료 시간 (Date)
13
13
  *
14
14
  * Session 테이블:
15
15
  * - impersonated_by: 대리 로그인한 관리자 ID
@@ -9,7 +9,7 @@
9
9
  * - role: 사용자 역할 (기본값: "user")
10
10
  * - banned: 차단 여부
11
11
  * - ban_reason: 차단 사유
12
- * - ban_expires: 차단 만료 시간 (Unix timestamp)
12
+ * - ban_expires: 차단 만료 시간 (Date)
13
13
  *
14
14
  * Session 테이블:
15
15
  * - impersonated_by: 대리 로그인한 관리자 ID
@@ -42,9 +42,9 @@ const adminEntityDef = {
42
42
  },
43
43
  {
44
44
  name: "ban_expires",
45
- type: "bigInteger",
45
+ type: "date",
46
46
  nullable: true,
47
- desc: "차단 만료 (Unix timestamp)"
47
+ desc: "차단 만료"
48
48
  }
49
49
  ],
50
50
  Session: [{
@@ -58,4 +58,4 @@ const adminEntityDef = {
58
58
 
59
59
  //#endregion
60
60
  export { adminEntityDef };
61
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4uanMiLCJuYW1lcyI6WyJhZG1pbkVudGl0eURlZjogQmV0dGVyQXV0aEVudGl0eURlZiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hdXRoL3BsdWdpbnMvZW50aXR5LWRlZmluaXRpb25zL2FkbWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQmV0dGVyQXV0aEVudGl0eURlZiB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogYmV0dGVyLWF1dGggYWRtaW4g7ZSM65+s6re47J24IOyXlO2LsO2LsCDsoJXsnZhcbiAqIGh0dHBzOi8vd3d3LmJldHRlci1hdXRoLmNvbS9kb2NzL3BsdWdpbnMvYWRtaW5cbiAqXG4gKiDqtIDrpqzsnpAg6riw64ql7J2EIOychO2VnCDtlYTrk5zrpbwg7LaU6rCA7ZWp64uI64ukOlxuICpcbiAqIFVzZXIg7YWM7J2067iUOlxuICogLSByb2xlOiDsgqzsmqnsnpAg7Jet7ZWgICjquLDrs7jqsJI6IFwidXNlclwiKVxuICogLSBiYW5uZWQ6IOywqOuLqCDsl6zrtoBcbiAqIC0gYmFuX3JlYXNvbjog7LCo64uoIOyCrOycoFxuICogLSBiYW5fZXhwaXJlczog7LCo64uoIOunjOujjCDsi5zqsIQgKFVuaXggdGltZXN0YW1wKVxuICpcbiAqIFNlc3Npb24g7YWM7J2067iUOlxuICogLSBpbXBlcnNvbmF0ZWRfYnk6IOuMgOumrCDroZzqt7jsnbjtlZwg6rSA66as7J6QIElEXG4gKi9cbmV4cG9ydCBjb25zdCBhZG1pbkVudGl0eURlZjogQmV0dGVyQXV0aEVudGl0eURlZiA9IHtcbiAgaWQ6IFwiYWRtaW5cIixcbiAgbmFtZTogXCJBZG1pblwiLFxuICBlbnRpdGllczogW10sXG4gIGFkZGl0aW9uYWxQcm9wczoge1xuICAgIFVzZXI6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJyb2xlXCIsXG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIG51bGxhYmxlOiB0cnVlLFxuICAgICAgICBkYkRlZmF1bHQ6ICdcInVzZXJcIicsXG4gICAgICAgIGRlc2M6IFwi7IKs7Jqp7J6QIOyXre2VoFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJiYW5uZWRcIixcbiAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgIG51bGxhYmxlOiB0cnVlLFxuICAgICAgICBkYkRlZmF1bHQ6IFwiZmFsc2VcIixcbiAgICAgICAgZGVzYzogXCLssKjri6gg7Jes67aAXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBcImJhbl9yZWFzb25cIixcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgIGRlc2M6IFwi7LCo64uoIOyCrOycoFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJiYW5fZXhwaXJlc1wiLFxuICAgICAgICB0eXBlOiBcImJpZ0ludGVnZXJcIixcbiAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgIGRlc2M6IFwi7LCo64uoIOunjOujjCAoVW5peCB0aW1lc3RhbXApXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgU2Vzc2lvbjogW1xuICAgICAge1xuICAgICAgICBuYW1lOiBcImltcGVyc29uYXRlZF9ieVwiLFxuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBudWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgZGVzYzogXCLrjIDrpqwg66Gc6re47J247ZWcIOq0gOumrOyekCBJRFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSxNQUFhQSxpQkFBc0M7Q0FDakQsSUFBSTtDQUNKLE1BQU07Q0FDTixVQUFVLEVBQUU7Q0FDWixpQkFBaUI7RUFDZixNQUFNO0dBQ0o7SUFDRSxNQUFNO0lBQ04sTUFBTTtJQUNOLFVBQVU7SUFDVixXQUFXO0lBQ1gsTUFBTTtJQUNQO0dBQ0Q7SUFDRSxNQUFNO0lBQ04sTUFBTTtJQUNOLFVBQVU7SUFDVixXQUFXO0lBQ1gsTUFBTTtJQUNQO0dBQ0Q7SUFDRSxNQUFNO0lBQ04sTUFBTTtJQUNOLFVBQVU7SUFDVixNQUFNO0lBQ1A7R0FDRDtJQUNFLE1BQU07SUFDTixNQUFNO0lBQ04sVUFBVTtJQUNWLE1BQU07SUFDUDtHQUNGO0VBQ0QsU0FBUyxDQUNQO0dBQ0UsTUFBTTtHQUNOLE1BQU07R0FDTixVQUFVO0dBQ1YsTUFBTTtHQUNQLENBQ0Y7RUFDRjtDQUNGIn0=
61
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4uanMiLCJuYW1lcyI6WyJhZG1pbkVudGl0eURlZjogQmV0dGVyQXV0aEVudGl0eURlZiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hdXRoL3BsdWdpbnMvZW50aXR5LWRlZmluaXRpb25zL2FkbWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQmV0dGVyQXV0aEVudGl0eURlZiB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogYmV0dGVyLWF1dGggYWRtaW4g7ZSM65+s6re47J24IOyXlO2LsO2LsCDsoJXsnZhcbiAqIGh0dHBzOi8vd3d3LmJldHRlci1hdXRoLmNvbS9kb2NzL3BsdWdpbnMvYWRtaW5cbiAqXG4gKiDqtIDrpqzsnpAg6riw64ql7J2EIOychO2VnCDtlYTrk5zrpbwg7LaU6rCA7ZWp64uI64ukOlxuICpcbiAqIFVzZXIg7YWM7J2067iUOlxuICogLSByb2xlOiDsgqzsmqnsnpAg7Jet7ZWgICjquLDrs7jqsJI6IFwidXNlclwiKVxuICogLSBiYW5uZWQ6IOywqOuLqCDsl6zrtoBcbiAqIC0gYmFuX3JlYXNvbjog7LCo64uoIOyCrOycoFxuICogLSBiYW5fZXhwaXJlczog7LCo64uoIOunjOujjCDsi5zqsIQgKERhdGUpXG4gKlxuICogU2Vzc2lvbiDthYzsnbTruJQ6XG4gKiAtIGltcGVyc29uYXRlZF9ieTog64yA66asIOuhnOq3uOyduO2VnCDqtIDrpqzsnpAgSURcbiAqL1xuZXhwb3J0IGNvbnN0IGFkbWluRW50aXR5RGVmOiBCZXR0ZXJBdXRoRW50aXR5RGVmID0ge1xuICBpZDogXCJhZG1pblwiLFxuICBuYW1lOiBcIkFkbWluXCIsXG4gIGVudGl0aWVzOiBbXSxcbiAgYWRkaXRpb25hbFByb3BzOiB7XG4gICAgVXNlcjogW1xuICAgICAge1xuICAgICAgICBuYW1lOiBcInJvbGVcIixcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgIGRiRGVmYXVsdDogJ1widXNlclwiJyxcbiAgICAgICAgZGVzYzogXCLsgqzsmqnsnpAg7Jet7ZWgXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBcImJhbm5lZFwiLFxuICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgIGRiRGVmYXVsdDogXCJmYWxzZVwiLFxuICAgICAgICBkZXNjOiBcIuywqOuLqCDsl6zrtoBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiYmFuX3JlYXNvblwiLFxuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBudWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgZGVzYzogXCLssKjri6gg7IKs7JygXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBcImJhbl9leHBpcmVzXCIsXG4gICAgICAgIHR5cGU6IFwiZGF0ZVwiLFxuICAgICAgICBudWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgZGVzYzogXCLssKjri6gg66eM66OMXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgU2Vzc2lvbjogW1xuICAgICAge1xuICAgICAgICBuYW1lOiBcImltcGVyc29uYXRlZF9ieVwiLFxuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBudWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgZGVzYzogXCLrjIDrpqwg66Gc6re47J247ZWcIOq0gOumrOyekCBJRFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSxNQUFhQSxpQkFBc0M7Q0FDakQsSUFBSTtDQUNKLE1BQU07Q0FDTixVQUFVLEVBQUU7Q0FDWixpQkFBaUI7RUFDZixNQUFNO0dBQ0o7SUFDRSxNQUFNO0lBQ04sTUFBTTtJQUNOLFVBQVU7SUFDVixXQUFXO0lBQ1gsTUFBTTtJQUNQO0dBQ0Q7SUFDRSxNQUFNO0lBQ04sTUFBTTtJQUNOLFVBQVU7SUFDVixXQUFXO0lBQ1gsTUFBTTtJQUNQO0dBQ0Q7SUFDRSxNQUFNO0lBQ04sTUFBTTtJQUNOLFVBQVU7SUFDVixNQUFNO0lBQ1A7R0FDRDtJQUNFLE1BQU07SUFDTixNQUFNO0lBQ04sVUFBVTtJQUNWLE1BQU07SUFDUDtHQUNGO0VBQ0QsU0FBUyxDQUNQO0dBQ0UsTUFBTTtHQUNOLE1BQU07R0FDTixVQUFVO0dBQ1YsTUFBTTtHQUNQLENBQ0Y7RUFDRjtDQUNGIn0=
@@ -0,0 +1,12 @@
1
+ import { type BetterAuthEntityDef } from "./types";
2
+ /**
3
+ * better-auth AuditLog 플러그인 엔티티 정의
4
+ *
5
+ * auth.plugins에 sonamuAuditLog() 추가 시 audit_events 테이블이 사용됩니다.
6
+ * - sonamuAuditLog 플러그인이 Better Auth databaseHooks/organizationHooks/middleware에서 수신한 이벤트를 1건씩 적재합니다.
7
+ * - dedupe_key(sha256 hex)로 중복 적재를 방지합니다.
8
+ *
9
+ * 생성 방법: pnpm sonamu auth generate --plugins audit-log
10
+ */
11
+ export declare const auditLogEntityDef: BetterAuthEntityDef;
12
+ //# sourceMappingURL=audit-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../../../src/auth/plugins/entity-definitions/audit-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,EAAE,mBA+J/B,CAAC"}
@@ -0,0 +1,291 @@
1
+ //#region src/auth/plugins/entity-definitions/audit-log.ts
2
+ /**
3
+ * better-auth AuditLog 플러그인 엔티티 정의
4
+ *
5
+ * auth.plugins에 sonamuAuditLog() 추가 시 audit_events 테이블이 사용됩니다.
6
+ * - sonamuAuditLog 플러그인이 Better Auth databaseHooks/organizationHooks/middleware에서 수신한 이벤트를 1건씩 적재합니다.
7
+ * - dedupe_key(sha256 hex)로 중복 적재를 방지합니다.
8
+ *
9
+ * 생성 방법: pnpm sonamu auth generate --plugins audit-log
10
+ */
11
+ const auditLogEntityDef = {
12
+ id: "audit-log",
13
+ name: "AuditLog",
14
+ entities: [{
15
+ id: "AuditEvent",
16
+ table: "audit_events",
17
+ title: "감사이벤트",
18
+ props: [
19
+ {
20
+ name: "id",
21
+ type: "integer",
22
+ desc: "ID"
23
+ },
24
+ {
25
+ name: "source",
26
+ type: "string",
27
+ length: 32,
28
+ desc: "이벤트 소스"
29
+ },
30
+ {
31
+ name: "source_version",
32
+ type: "string",
33
+ length: 96,
34
+ nullable: true,
35
+ desc: "소스 버전"
36
+ },
37
+ {
38
+ name: "category",
39
+ type: "enum",
40
+ id: "AuditEventCategory",
41
+ desc: "카테고리"
42
+ },
43
+ {
44
+ name: "event_type",
45
+ type: "string",
46
+ length: 64,
47
+ desc: "이벤트 타입"
48
+ },
49
+ {
50
+ name: "event_key",
51
+ type: "string",
52
+ length: 191,
53
+ desc: "이벤트 키"
54
+ },
55
+ {
56
+ name: "dedupe_key",
57
+ type: "string",
58
+ length: 64,
59
+ desc: "중복 제거 키"
60
+ },
61
+ {
62
+ name: "actor_user_id",
63
+ type: "string",
64
+ length: 191,
65
+ nullable: true,
66
+ desc: "액터 사용자 ID"
67
+ },
68
+ {
69
+ name: "subject_user_id",
70
+ type: "string",
71
+ length: 191,
72
+ nullable: true,
73
+ desc: "대상 사용자 ID"
74
+ },
75
+ {
76
+ name: "organization_id",
77
+ type: "string",
78
+ length: 191,
79
+ nullable: true,
80
+ desc: "조직 ID"
81
+ },
82
+ {
83
+ name: "team_id",
84
+ type: "string",
85
+ length: 191,
86
+ nullable: true,
87
+ desc: "팀 ID"
88
+ },
89
+ {
90
+ name: "session_id",
91
+ type: "string",
92
+ length: 191,
93
+ nullable: true,
94
+ desc: "세션 ID"
95
+ },
96
+ {
97
+ name: "provider_id",
98
+ type: "string",
99
+ length: 64,
100
+ nullable: true,
101
+ desc: "프로바이더 ID"
102
+ },
103
+ {
104
+ name: "login_method",
105
+ type: "string",
106
+ length: 64,
107
+ nullable: true,
108
+ desc: "로그인 방식"
109
+ },
110
+ {
111
+ name: "identifier",
112
+ type: "string",
113
+ length: 255,
114
+ nullable: true,
115
+ desc: "식별자"
116
+ },
117
+ {
118
+ name: "visitor_id",
119
+ type: "string",
120
+ length: 191,
121
+ nullable: true,
122
+ desc: "방문자 ID"
123
+ },
124
+ {
125
+ name: "reason",
126
+ type: "string",
127
+ length: 128,
128
+ nullable: true,
129
+ desc: "사유"
130
+ },
131
+ {
132
+ name: "action",
133
+ type: "string",
134
+ length: 64,
135
+ nullable: true,
136
+ desc: "액션"
137
+ },
138
+ {
139
+ name: "trigger_context",
140
+ type: "string",
141
+ length: 64,
142
+ nullable: true,
143
+ desc: "트리거 컨텍스트"
144
+ },
145
+ {
146
+ name: "ip_address",
147
+ type: "string",
148
+ length: 45,
149
+ nullable: true,
150
+ desc: "IP 주소"
151
+ },
152
+ {
153
+ name: "country_code",
154
+ type: "string",
155
+ length: 8,
156
+ nullable: true,
157
+ desc: "국가 코드"
158
+ },
159
+ {
160
+ name: "country",
161
+ type: "string",
162
+ length: 100,
163
+ nullable: true,
164
+ desc: "국가"
165
+ },
166
+ {
167
+ name: "city",
168
+ type: "string",
169
+ length: 100,
170
+ nullable: true,
171
+ desc: "도시"
172
+ },
173
+ {
174
+ name: "user_agent",
175
+ type: "string",
176
+ nullable: true,
177
+ desc: "User-Agent"
178
+ },
179
+ {
180
+ name: "payload_json",
181
+ type: "json",
182
+ id: "AuditEventPayload",
183
+ desc: "원본 payload"
184
+ },
185
+ {
186
+ name: "occurred_at",
187
+ type: "date",
188
+ desc: "발생 시각"
189
+ },
190
+ {
191
+ name: "ingested_at",
192
+ type: "date",
193
+ dbDefault: "CURRENT_TIMESTAMP",
194
+ desc: "적재 시각"
195
+ }
196
+ ],
197
+ indexes: [
198
+ {
199
+ type: "unique",
200
+ name: "audit_events_dedupe_key_unique",
201
+ columns: [{ name: "dedupe_key" }]
202
+ },
203
+ {
204
+ type: "index",
205
+ name: "audit_events_occurred_at_index",
206
+ columns: [{ name: "occurred_at" }]
207
+ },
208
+ {
209
+ type: "index",
210
+ name: "audit_events_event_type_occurred_at_index",
211
+ columns: [{ name: "event_type" }, { name: "occurred_at" }]
212
+ },
213
+ {
214
+ type: "index",
215
+ name: "audit_events_subject_user_id_occurred_at_index",
216
+ columns: [{ name: "subject_user_id" }, { name: "occurred_at" }]
217
+ },
218
+ {
219
+ type: "index",
220
+ name: "audit_events_actor_user_id_occurred_at_index",
221
+ columns: [{ name: "actor_user_id" }, { name: "occurred_at" }]
222
+ },
223
+ {
224
+ type: "index",
225
+ name: "audit_events_organization_id_occurred_at_index",
226
+ columns: [{ name: "organization_id" }, { name: "occurred_at" }]
227
+ },
228
+ {
229
+ type: "index",
230
+ name: "audit_events_team_id_occurred_at_index",
231
+ columns: [{ name: "team_id" }, { name: "occurred_at" }]
232
+ },
233
+ {
234
+ type: "index",
235
+ name: "audit_events_session_id_index",
236
+ columns: [{ name: "session_id" }]
237
+ },
238
+ {
239
+ type: "index",
240
+ name: "audit_events_reason_occurred_at_index",
241
+ columns: [{ name: "reason" }, { name: "occurred_at" }]
242
+ }
243
+ ],
244
+ subsets: { A: [
245
+ "id",
246
+ "source",
247
+ "source_version",
248
+ "category",
249
+ "event_type",
250
+ "event_key",
251
+ "dedupe_key",
252
+ "actor_user_id",
253
+ "subject_user_id",
254
+ "organization_id",
255
+ "team_id",
256
+ "session_id",
257
+ "provider_id",
258
+ "login_method",
259
+ "identifier",
260
+ "visitor_id",
261
+ "reason",
262
+ "action",
263
+ "trigger_context",
264
+ "ip_address",
265
+ "country_code",
266
+ "country",
267
+ "city",
268
+ "user_agent",
269
+ "payload_json",
270
+ "occurred_at",
271
+ "ingested_at"
272
+ ] },
273
+ enums: {
274
+ AuditEventOrderBy: { "id-desc": "ID최신순" },
275
+ AuditEventSearchField: { id: "ID" },
276
+ AuditEventCategory: {
277
+ user: "사용자",
278
+ session: "세션",
279
+ account: "계정",
280
+ verification: "인증",
281
+ organization: "조직",
282
+ security: "보안"
283
+ }
284
+ }
285
+ }],
286
+ additionalProps: {}
287
+ };
288
+
289
+ //#endregion
290
+ export { auditLogEntityDef };
291
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLmpzIiwibmFtZXMiOlsiYXVkaXRMb2dFbnRpdHlEZWY6IEJldHRlckF1dGhFbnRpdHlEZWYiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXV0aC9wbHVnaW5zL2VudGl0eS1kZWZpbml0aW9ucy9hdWRpdC1sb2cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBCZXR0ZXJBdXRoRW50aXR5RGVmIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiBiZXR0ZXItYXV0aCBBdWRpdExvZyDtlIzrn6zqt7jsnbgg7JeU7Yuw7YuwIOygleydmFxuICpcbiAqIGF1dGgucGx1Z2luc+yXkCBzb25hbXVBdWRpdExvZygpIOy2lOqwgCDsi5wgYXVkaXRfZXZlbnRzIO2FjOydtOu4lOydtCDsgqzsmqnrkKnri4jri6QuXG4gKiAtIHNvbmFtdUF1ZGl0TG9nIO2UjOufrOq3uOyduOydtCBCZXR0ZXIgQXV0aCBkYXRhYmFzZUhvb2tzL29yZ2FuaXphdGlvbkhvb2tzL21pZGRsZXdhcmXsl5DshJwg7IiY7Iug7ZWcIOydtOuypO2KuOulvCAx6rG07JSpIOyggeyerO2VqeuLiOuLpC5cbiAqIC0gZGVkdXBlX2tleShzaGEyNTYgaGV4KeuhnCDspJHrs7Ug7KCB7J6s66W8IOuwqeyngO2VqeuLiOuLpC5cbiAqXG4gKiDsg53shLEg67Cp67KVOiBwbnBtIHNvbmFtdSBhdXRoIGdlbmVyYXRlIC0tcGx1Z2lucyBhdWRpdC1sb2dcbiAqL1xuZXhwb3J0IGNvbnN0IGF1ZGl0TG9nRW50aXR5RGVmOiBCZXR0ZXJBdXRoRW50aXR5RGVmID0ge1xuICBpZDogXCJhdWRpdC1sb2dcIixcbiAgbmFtZTogXCJBdWRpdExvZ1wiLFxuICBlbnRpdGllczogW1xuICAgIHtcbiAgICAgIGlkOiBcIkF1ZGl0RXZlbnRcIixcbiAgICAgIHRhYmxlOiBcImF1ZGl0X2V2ZW50c1wiLFxuICAgICAgdGl0bGU6IFwi6rCQ7IKs7J2067Kk7Yq4XCIsXG4gICAgICBwcm9wczogW1xuICAgICAgICB7IG5hbWU6IFwiaWRcIiwgdHlwZTogXCJpbnRlZ2VyXCIsIGRlc2M6IFwiSURcIiB9LFxuICAgICAgICB7IG5hbWU6IFwic291cmNlXCIsIHR5cGU6IFwic3RyaW5nXCIsIGxlbmd0aDogMzIsIGRlc2M6IFwi7J2067Kk7Yq4IOyGjOyKpFwiIH0sXG4gICAgICAgIHsgbmFtZTogXCJzb3VyY2VfdmVyc2lvblwiLCB0eXBlOiBcInN0cmluZ1wiLCBsZW5ndGg6IDk2LCBudWxsYWJsZTogdHJ1ZSwgZGVzYzogXCLshozsiqQg67KE7KCEXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcImNhdGVnb3J5XCIsIHR5cGU6IFwiZW51bVwiLCBpZDogXCJBdWRpdEV2ZW50Q2F0ZWdvcnlcIiwgZGVzYzogXCLsubTthYzqs6DrpqxcIiB9LFxuICAgICAgICB7IG5hbWU6IFwiZXZlbnRfdHlwZVwiLCB0eXBlOiBcInN0cmluZ1wiLCBsZW5ndGg6IDY0LCBkZXNjOiBcIuydtOuypO2KuCDtg4DsnoVcIiB9LFxuICAgICAgICB7IG5hbWU6IFwiZXZlbnRfa2V5XCIsIHR5cGU6IFwic3RyaW5nXCIsIGxlbmd0aDogMTkxLCBkZXNjOiBcIuydtOuypO2KuCDtgqRcIiB9LFxuICAgICAgICB7IG5hbWU6IFwiZGVkdXBlX2tleVwiLCB0eXBlOiBcInN0cmluZ1wiLCBsZW5ndGg6IDY0LCBkZXNjOiBcIuykkeuztSDsoJzqsbAg7YKkXCIgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiYWN0b3JfdXNlcl9pZFwiLFxuICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgbGVuZ3RoOiAxOTEsXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZGVzYzogXCLslaHthLAg7IKs7Jqp7J6QIElEXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInN1YmplY3RfdXNlcl9pZFwiLFxuICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgbGVuZ3RoOiAxOTEsXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZGVzYzogXCLrjIDsg4Eg7IKs7Jqp7J6QIElEXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcIm9yZ2FuaXphdGlvbl9pZFwiLFxuICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgbGVuZ3RoOiAxOTEsXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZGVzYzogXCLsobDsp4EgSURcIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBuYW1lOiBcInRlYW1faWRcIiwgdHlwZTogXCJzdHJpbmdcIiwgbGVuZ3RoOiAxOTEsIG51bGxhYmxlOiB0cnVlLCBkZXNjOiBcIu2MgCBJRFwiIH0sXG4gICAgICAgIHsgbmFtZTogXCJzZXNzaW9uX2lkXCIsIHR5cGU6IFwic3RyaW5nXCIsIGxlbmd0aDogMTkxLCBudWxsYWJsZTogdHJ1ZSwgZGVzYzogXCLshLjshZggSURcIiB9LFxuICAgICAgICB7IG5hbWU6IFwicHJvdmlkZXJfaWRcIiwgdHlwZTogXCJzdHJpbmdcIiwgbGVuZ3RoOiA2NCwgbnVsbGFibGU6IHRydWUsIGRlc2M6IFwi7ZSE66Gc67CU7J20642UIElEXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcImxvZ2luX21ldGhvZFwiLCB0eXBlOiBcInN0cmluZ1wiLCBsZW5ndGg6IDY0LCBudWxsYWJsZTogdHJ1ZSwgZGVzYzogXCLroZzqt7jsnbgg67Cp7IudXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcImlkZW50aWZpZXJcIiwgdHlwZTogXCJzdHJpbmdcIiwgbGVuZ3RoOiAyNTUsIG51bGxhYmxlOiB0cnVlLCBkZXNjOiBcIuyLneuzhOyekFwiIH0sXG4gICAgICAgIHsgbmFtZTogXCJ2aXNpdG9yX2lkXCIsIHR5cGU6IFwic3RyaW5nXCIsIGxlbmd0aDogMTkxLCBudWxsYWJsZTogdHJ1ZSwgZGVzYzogXCLrsKnrrLjsnpAgSURcIiB9LFxuICAgICAgICB7IG5hbWU6IFwicmVhc29uXCIsIHR5cGU6IFwic3RyaW5nXCIsIGxlbmd0aDogMTI4LCBudWxsYWJsZTogdHJ1ZSwgZGVzYzogXCLsgqzsnKBcIiB9LFxuICAgICAgICB7IG5hbWU6IFwiYWN0aW9uXCIsIHR5cGU6IFwic3RyaW5nXCIsIGxlbmd0aDogNjQsIG51bGxhYmxlOiB0cnVlLCBkZXNjOiBcIuyVoeyFmFwiIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInRyaWdnZXJfY29udGV4dFwiLFxuICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgbGVuZ3RoOiA2NCxcbiAgICAgICAgICBudWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICBkZXNjOiBcIu2KuOumrOqxsCDsu6jthY3siqTtirhcIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBuYW1lOiBcImlwX2FkZHJlc3NcIiwgdHlwZTogXCJzdHJpbmdcIiwgbGVuZ3RoOiA0NSwgbnVsbGFibGU6IHRydWUsIGRlc2M6IFwiSVAg7KO87IaMXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcImNvdW50cnlfY29kZVwiLCB0eXBlOiBcInN0cmluZ1wiLCBsZW5ndGg6IDgsIG51bGxhYmxlOiB0cnVlLCBkZXNjOiBcIuq1reqwgCDsvZTrk5xcIiB9LFxuICAgICAgICB7IG5hbWU6IFwiY291bnRyeVwiLCB0eXBlOiBcInN0cmluZ1wiLCBsZW5ndGg6IDEwMCwgbnVsbGFibGU6IHRydWUsIGRlc2M6IFwi6rWt6rCAXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcImNpdHlcIiwgdHlwZTogXCJzdHJpbmdcIiwgbGVuZ3RoOiAxMDAsIG51bGxhYmxlOiB0cnVlLCBkZXNjOiBcIuuPhOyLnFwiIH0sXG4gICAgICAgIHsgbmFtZTogXCJ1c2VyX2FnZW50XCIsIHR5cGU6IFwic3RyaW5nXCIsIG51bGxhYmxlOiB0cnVlLCBkZXNjOiBcIlVzZXItQWdlbnRcIiB9LFxuICAgICAgICB7IG5hbWU6IFwicGF5bG9hZF9qc29uXCIsIHR5cGU6IFwianNvblwiLCBpZDogXCJBdWRpdEV2ZW50UGF5bG9hZFwiLCBkZXNjOiBcIuybkOuzuCBwYXlsb2FkXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcIm9jY3VycmVkX2F0XCIsIHR5cGU6IFwiZGF0ZVwiLCBkZXNjOiBcIuuwnOyDnSDsi5zqsIFcIiB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJpbmdlc3RlZF9hdFwiLFxuICAgICAgICAgIHR5cGU6IFwiZGF0ZVwiLFxuICAgICAgICAgIGRiRGVmYXVsdDogXCJDVVJSRU5UX1RJTUVTVEFNUFwiLFxuICAgICAgICAgIGRlc2M6IFwi7KCB7J6sIOyLnOqwgVwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGluZGV4ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwidW5pcXVlXCIsXG4gICAgICAgICAgbmFtZTogXCJhdWRpdF9ldmVudHNfZGVkdXBlX2tleV91bmlxdWVcIixcbiAgICAgICAgICBjb2x1bW5zOiBbeyBuYW1lOiBcImRlZHVwZV9rZXlcIiB9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiaW5kZXhcIixcbiAgICAgICAgICBuYW1lOiBcImF1ZGl0X2V2ZW50c19vY2N1cnJlZF9hdF9pbmRleFwiLFxuICAgICAgICAgIGNvbHVtbnM6IFt7IG5hbWU6IFwib2NjdXJyZWRfYXRcIiB9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiaW5kZXhcIixcbiAgICAgICAgICBuYW1lOiBcImF1ZGl0X2V2ZW50c19ldmVudF90eXBlX29jY3VycmVkX2F0X2luZGV4XCIsXG4gICAgICAgICAgY29sdW1uczogW3sgbmFtZTogXCJldmVudF90eXBlXCIgfSwgeyBuYW1lOiBcIm9jY3VycmVkX2F0XCIgfV0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImluZGV4XCIsXG4gICAgICAgICAgbmFtZTogXCJhdWRpdF9ldmVudHNfc3ViamVjdF91c2VyX2lkX29jY3VycmVkX2F0X2luZGV4XCIsXG4gICAgICAgICAgY29sdW1uczogW3sgbmFtZTogXCJzdWJqZWN0X3VzZXJfaWRcIiB9LCB7IG5hbWU6IFwib2NjdXJyZWRfYXRcIiB9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiaW5kZXhcIixcbiAgICAgICAgICBuYW1lOiBcImF1ZGl0X2V2ZW50c19hY3Rvcl91c2VyX2lkX29jY3VycmVkX2F0X2luZGV4XCIsXG4gICAgICAgICAgY29sdW1uczogW3sgbmFtZTogXCJhY3Rvcl91c2VyX2lkXCIgfSwgeyBuYW1lOiBcIm9jY3VycmVkX2F0XCIgfV0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImluZGV4XCIsXG4gICAgICAgICAgbmFtZTogXCJhdWRpdF9ldmVudHNfb3JnYW5pemF0aW9uX2lkX29jY3VycmVkX2F0X2luZGV4XCIsXG4gICAgICAgICAgY29sdW1uczogW3sgbmFtZTogXCJvcmdhbml6YXRpb25faWRcIiB9LCB7IG5hbWU6IFwib2NjdXJyZWRfYXRcIiB9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiaW5kZXhcIixcbiAgICAgICAgICBuYW1lOiBcImF1ZGl0X2V2ZW50c190ZWFtX2lkX29jY3VycmVkX2F0X2luZGV4XCIsXG4gICAgICAgICAgY29sdW1uczogW3sgbmFtZTogXCJ0ZWFtX2lkXCIgfSwgeyBuYW1lOiBcIm9jY3VycmVkX2F0XCIgfV0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImluZGV4XCIsXG4gICAgICAgICAgbmFtZTogXCJhdWRpdF9ldmVudHNfc2Vzc2lvbl9pZF9pbmRleFwiLFxuICAgICAgICAgIGNvbHVtbnM6IFt7IG5hbWU6IFwic2Vzc2lvbl9pZFwiIH1dLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJpbmRleFwiLFxuICAgICAgICAgIG5hbWU6IFwiYXVkaXRfZXZlbnRzX3JlYXNvbl9vY2N1cnJlZF9hdF9pbmRleFwiLFxuICAgICAgICAgIGNvbHVtbnM6IFt7IG5hbWU6IFwicmVhc29uXCIgfSwgeyBuYW1lOiBcIm9jY3VycmVkX2F0XCIgfV0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgc3Vic2V0czoge1xuICAgICAgICBBOiBbXG4gICAgICAgICAgXCJpZFwiLFxuICAgICAgICAgIFwic291cmNlXCIsXG4gICAgICAgICAgXCJzb3VyY2VfdmVyc2lvblwiLFxuICAgICAgICAgIFwiY2F0ZWdvcnlcIixcbiAgICAgICAgICBcImV2ZW50X3R5cGVcIixcbiAgICAgICAgICBcImV2ZW50X2tleVwiLFxuICAgICAgICAgIFwiZGVkdXBlX2tleVwiLFxuICAgICAgICAgIFwiYWN0b3JfdXNlcl9pZFwiLFxuICAgICAgICAgIFwic3ViamVjdF91c2VyX2lkXCIsXG4gICAgICAgICAgXCJvcmdhbml6YXRpb25faWRcIixcbiAgICAgICAgICBcInRlYW1faWRcIixcbiAgICAgICAgICBcInNlc3Npb25faWRcIixcbiAgICAgICAgICBcInByb3ZpZGVyX2lkXCIsXG4gICAgICAgICAgXCJsb2dpbl9tZXRob2RcIixcbiAgICAgICAgICBcImlkZW50aWZpZXJcIixcbiAgICAgICAgICBcInZpc2l0b3JfaWRcIixcbiAgICAgICAgICBcInJlYXNvblwiLFxuICAgICAgICAgIFwiYWN0aW9uXCIsXG4gICAgICAgICAgXCJ0cmlnZ2VyX2NvbnRleHRcIixcbiAgICAgICAgICBcImlwX2FkZHJlc3NcIixcbiAgICAgICAgICBcImNvdW50cnlfY29kZVwiLFxuICAgICAgICAgIFwiY291bnRyeVwiLFxuICAgICAgICAgIFwiY2l0eVwiLFxuICAgICAgICAgIFwidXNlcl9hZ2VudFwiLFxuICAgICAgICAgIFwicGF5bG9hZF9qc29uXCIsXG4gICAgICAgICAgXCJvY2N1cnJlZF9hdFwiLFxuICAgICAgICAgIFwiaW5nZXN0ZWRfYXRcIixcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBlbnVtczoge1xuICAgICAgICBBdWRpdEV2ZW50T3JkZXJCeTogeyBcImlkLWRlc2NcIjogXCJJROy1nOyLoOyInFwiIH0sXG4gICAgICAgIEF1ZGl0RXZlbnRTZWFyY2hGaWVsZDogeyBpZDogXCJJRFwiIH0sXG4gICAgICAgIEF1ZGl0RXZlbnRDYXRlZ29yeToge1xuICAgICAgICAgIHVzZXI6IFwi7IKs7Jqp7J6QXCIsXG4gICAgICAgICAgc2Vzc2lvbjogXCLshLjshZhcIixcbiAgICAgICAgICBhY2NvdW50OiBcIuqzhOyglVwiLFxuICAgICAgICAgIHZlcmlmaWNhdGlvbjogXCLsnbjspp1cIixcbiAgICAgICAgICBvcmdhbml6YXRpb246IFwi7KGw7KeBXCIsXG4gICAgICAgICAgc2VjdXJpdHk6IFwi67O07JWIXCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIF0sXG4gIGFkZGl0aW9uYWxQcm9wczoge30sXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBV0EsTUFBYUEsb0JBQXlDO0NBQ3BELElBQUk7Q0FDSixNQUFNO0NBQ04sVUFBVSxDQUNSO0VBQ0UsSUFBSTtFQUNKLE9BQU87RUFDUCxPQUFPO0VBQ1AsT0FBTztHQUNMO0lBQUUsTUFBTTtJQUFNLE1BQU07SUFBVyxNQUFNO0lBQU07R0FDM0M7SUFBRSxNQUFNO0lBQVUsTUFBTTtJQUFVLFFBQVE7SUFBSSxNQUFNO0lBQVU7R0FDOUQ7SUFBRSxNQUFNO0lBQWtCLE1BQU07SUFBVSxRQUFRO0lBQUksVUFBVTtJQUFNLE1BQU07SUFBUztHQUNyRjtJQUFFLE1BQU07SUFBWSxNQUFNO0lBQVEsSUFBSTtJQUFzQixNQUFNO0lBQVE7R0FDMUU7SUFBRSxNQUFNO0lBQWMsTUFBTTtJQUFVLFFBQVE7SUFBSSxNQUFNO0lBQVU7R0FDbEU7SUFBRSxNQUFNO0lBQWEsTUFBTTtJQUFVLFFBQVE7SUFBSyxN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
@@ -1,6 +1,7 @@
1
1
  export { adminEntityDef } from "./admin";
2
2
  export { anonymousEntityDef } from "./anonymous";
3
3
  export { apiKeyEntityDef } from "./api-key";
4
+ export { auditLogEntityDef } from "./audit-log";
4
5
  export { jwtEntityDef } from "./jwt";
5
6
  export { organizationEntityDef } from "./organization";
6
7
  export { passkeyEntityDef } from "./passkey";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/auth/plugins/entity-definitions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAW/C,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG5E;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAW9E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,EAE5B,CAAC;AAE1B;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,kBAAkB,CAEpE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/auth/plugins/entity-definitions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAY/C,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG5E;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAY9E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,EAE5B,CAAC;AAE1B;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,kBAAkB,CAEpE"}