sonamu 0.9.3 → 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.
- package/dist/api/config.d.ts +0 -8
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +1 -1
- package/dist/api/sonamu.d.ts +0 -1
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +2 -41
- package/dist/auth/audit-log/builders.d.ts +216 -0
- package/dist/auth/audit-log/builders.d.ts.map +1 -0
- package/dist/auth/audit-log/builders.js +307 -0
- package/dist/auth/audit-log/events.d.ts +143 -0
- package/dist/auth/audit-log/events.d.ts.map +1 -0
- package/dist/auth/audit-log/events.js +74 -0
- package/dist/auth/audit-log/plugin.d.ts +11 -0
- package/dist/auth/audit-log/plugin.d.ts.map +1 -0
- package/dist/auth/audit-log/plugin.js +427 -0
- package/dist/auth/audit-log-ingestor.d.ts +3 -3
- package/dist/auth/audit-log-ingestor.d.ts.map +1 -1
- package/dist/auth/audit-log-ingestor.js +44 -50
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +4 -4
- package/dist/auth/plugins/entity-definitions/admin.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/admin.js +4 -4
- package/dist/auth/plugins/entity-definitions/audit-log.d.ts +2 -2
- package/dist/auth/plugins/entity-definitions/audit-log.js +3 -3
- package/dist/auth/plugins/wrappers/admin.d.ts +2 -2
- package/dist/auth/plugins/wrappers/sso.d.ts +1 -1
- package/dist/bin/fixture.d.ts.map +1 -1
- package/dist/bin/fixture.js +111 -1
- package/dist/database/_batch_update.d.ts +1 -1
- package/dist/database/_batch_update.js +2 -2
- package/dist/entity/entity-manager.d.ts +2 -2
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +14 -4
- package/dist/index.js +4 -3
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +2 -9
- package/dist/template/implementations/entry-server.template.js +3 -2
- package/dist/template/implementations/generated.template.d.ts.map +1 -1
- package/dist/template/implementations/generated.template.js +2 -1
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_sso.template.js +2 -1
- package/dist/template/implementations/queries.template.d.ts.map +1 -1
- package/dist/template/implementations/queries.template.js +3 -1
- package/dist/template/implementations/sd.template.js +3 -2
- package/dist/template/implementations/services.template.d.ts.map +1 -1
- package/dist/template/implementations/services.template.js +44 -7
- package/dist/template/zod-converter.d.ts.map +1 -1
- package/dist/template/zod-converter.js +2 -2
- package/dist/types/types.d.ts +14 -14
- package/dist/ui-web/assets/{index-DrTfl0Ts.js → index-C5KUjXm0.js} +46 -46
- package/dist/ui-web/index.html +1 -1
- package/dist/utils/fs-utils.d.ts.map +1 -1
- package/dist/utils/fs-utils.js +4 -4
- package/package.json +1 -2
- package/src/api/config.ts +0 -8
- package/src/api/sonamu.ts +1 -51
- package/src/auth/audit-log/builders.ts +791 -0
- package/src/auth/audit-log/events.ts +149 -0
- package/src/auth/audit-log/plugin.ts +913 -0
- package/src/auth/audit-log-ingestor.ts +3 -4
- package/src/auth/index.ts +2 -0
- package/src/auth/plugins/entity-definitions/admin.ts +3 -3
- package/src/auth/plugins/entity-definitions/audit-log.ts +2 -2
- package/src/bin/fixture.ts +143 -0
- package/src/database/_batch_update.ts +1 -1
- package/src/entity/entity-manager.ts +10 -3
- package/src/shared/app.shared.ts.txt +2 -3
- package/src/shared/web.shared.ts.txt +2 -2
- package/src/syncer/syncer.ts +1 -11
- package/src/template/implementations/entry-server.template.ts +1 -1
- package/src/template/implementations/generated.template.ts +1 -0
- package/src/template/implementations/generated_sso.template.ts +1 -0
- package/src/template/implementations/queries.template.ts +10 -1
- package/src/template/implementations/sd.template.ts +1 -1
- package/src/template/implementations/services.template.ts +62 -6
- package/src/template/zod-converter.ts +2 -1
- package/src/utils/fs-utils.ts +6 -4
- package/dist/auth/audit-log-proxy-types.d.ts +0 -23
- package/dist/auth/audit-log-proxy-types.d.ts.map +0 -1
- package/dist/auth/audit-log-proxy-types.js +0 -1
- package/src/auth/audit-log-proxy-types.ts +0 -23
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sonamuAuditLog 플러그인이 audit-log-ingestor로 전달하는 이벤트 body 타입.
|
|
3
|
+
*/
|
|
4
|
+
export type AuditLogEvent = {
|
|
5
|
+
eventType: string;
|
|
6
|
+
eventData: Record<string, unknown>;
|
|
7
|
+
eventKey: string;
|
|
8
|
+
eventDisplayName?: string;
|
|
9
|
+
ipAddress?: string;
|
|
10
|
+
city?: string;
|
|
11
|
+
country?: string;
|
|
12
|
+
countryCode?: string;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
// dash(@better-auth/infra)의 audit-event 상수 집합을 Sonamu 로컬 적재 경로에 맞게 포팅.
|
|
16
|
+
export const EVENT_TYPES = {
|
|
17
|
+
USER_CREATED: "user_created",
|
|
18
|
+
USER_SIGNED_IN: "user_signed_in",
|
|
19
|
+
USER_SIGNED_OUT: "user_signed_out",
|
|
20
|
+
USER_SIGN_IN_FAILED: "user_sign_in_failed",
|
|
21
|
+
PASSWORD_RESET_REQUESTED: "password_reset_requested",
|
|
22
|
+
PASSWORD_RESET_COMPLETED: "password_reset_completed",
|
|
23
|
+
PASSWORD_CHANGED: "password_changed",
|
|
24
|
+
EMAIL_VERIFICATION_SENT: "email_verification_sent",
|
|
25
|
+
EMAIL_VERIFIED: "email_verified",
|
|
26
|
+
PROFILE_UPDATED: "profile_updated",
|
|
27
|
+
PROFILE_IMAGE_UPDATED: "profile_image_updated",
|
|
28
|
+
SESSION_CREATED: "session_created",
|
|
29
|
+
SESSION_REVOKED: "session_revoked",
|
|
30
|
+
ALL_SESSIONS_REVOKED: "all_sessions_revoked",
|
|
31
|
+
ACCOUNT_LINKED: "account_linked",
|
|
32
|
+
ACCOUNT_UNLINKED: "account_unlinked",
|
|
33
|
+
USER_BANNED: "user_banned",
|
|
34
|
+
USER_UNBANNED: "user_unbanned",
|
|
35
|
+
USER_DELETED: "user_deleted",
|
|
36
|
+
USER_IMPERSONATED: "user_impersonated",
|
|
37
|
+
USER_IMPERSONATED_STOPPED: "user_impersonated_stopped",
|
|
38
|
+
} as const;
|
|
39
|
+
|
|
40
|
+
export const ORGANIZATION_EVENT_TYPES = {
|
|
41
|
+
ORGANIZATION_CREATED: "organization_created",
|
|
42
|
+
ORGANIZATION_UPDATED: "organization_updated",
|
|
43
|
+
ORGANIZATION_MEMBER_ADDED: "organization_member_added",
|
|
44
|
+
ORGANIZATION_MEMBER_REMOVED: "organization_member_removed",
|
|
45
|
+
ORGANIZATION_MEMBER_ROLE_UPDATED: "organization_member_role_updated",
|
|
46
|
+
ORGANIZATION_MEMBER_INVITED: "organization_member_invited",
|
|
47
|
+
ORGANIZATION_MEMBER_INVITE_CANCELED: "organization_member_invite_canceled",
|
|
48
|
+
ORGANIZATION_MEMBER_INVITE_ACCEPTED: "organization_member_invite_accepted",
|
|
49
|
+
ORGANIZATION_MEMBER_INVITE_REJECTED: "organization_member_invite_rejected",
|
|
50
|
+
ORGANIZATION_TEAM_CREATED: "organization_team_created",
|
|
51
|
+
ORGANIZATION_TEAM_UPDATED: "organization_team_updated",
|
|
52
|
+
ORGANIZATION_TEAM_DELETED: "organization_team_deleted",
|
|
53
|
+
ORGANIZATION_TEAM_MEMBER_ADDED: "organization_team_member_added",
|
|
54
|
+
ORGANIZATION_TEAM_MEMBER_REMOVED: "organization_team_member_removed",
|
|
55
|
+
} as const;
|
|
56
|
+
|
|
57
|
+
// dash의 routes 상수 중 우리가 실제 matcher로 쓰는 항목만 포팅.
|
|
58
|
+
export const ROUTES = {
|
|
59
|
+
SIGN_IN: "/sign-in",
|
|
60
|
+
SIGN_IN_EMAIL: "/sign-in/email",
|
|
61
|
+
SIGN_IN_EMAIL_OTP: "/sign-in/email-otp",
|
|
62
|
+
SIGN_IN_SOCIAL: "/sign-in/social",
|
|
63
|
+
SIGN_IN_SOCIAL_CALLBACK: "/callback/:id",
|
|
64
|
+
SIGN_IN_OAUTH_CALLBACK: "/oauth2/callback/:id",
|
|
65
|
+
SIGN_UP: "/sign-up",
|
|
66
|
+
SIGN_UP_EMAIL: "/sign-up/email",
|
|
67
|
+
SIGN_OUT: "/sign-out",
|
|
68
|
+
SEND_VERIFICATION_EMAIL: "/send-verification-email",
|
|
69
|
+
UPDATE_USER: "/update-user",
|
|
70
|
+
CHANGE_EMAIL: "/change-email",
|
|
71
|
+
VERIFY_EMAIL: "/verify-email",
|
|
72
|
+
CHANGE_PASSWORD: "/change-password",
|
|
73
|
+
SET_PASSWORD: "/set-password",
|
|
74
|
+
RESET_PASSWORD: "/reset-password",
|
|
75
|
+
REQUEST_PASSWORD_RESET: "/request-password-reset",
|
|
76
|
+
REVOKE_ALL_SESSIONS: "/revoke-sessions",
|
|
77
|
+
DASH_ROUTE: "/dash",
|
|
78
|
+
DASH_UPDATE_USER: "/dash/update-user",
|
|
79
|
+
DASH_REVOKE_SESSIONS_ALL: "/dash/sessions/revoke-all",
|
|
80
|
+
DASH_BAN_USER: "/dash/ban-user",
|
|
81
|
+
DASH_UNBAN_USER: "/dash/unban-user",
|
|
82
|
+
ADMIN_ROUTE: "/admin",
|
|
83
|
+
ADMIN_REVOKE_USER_SESSIONS: "/admin/revoke-user-sessions",
|
|
84
|
+
ADMIN_SET_PASSWORD: "/admin/set-user-password",
|
|
85
|
+
ADMIN_BAN_USER: "/admin/ban-user",
|
|
86
|
+
ADMIN_UNBAN_USER: "/admin/unban-user",
|
|
87
|
+
} as const;
|
|
88
|
+
|
|
89
|
+
export type BuilderTrigger = { triggeredBy: string; triggerContext: string };
|
|
90
|
+
export type BuilderLocation = {
|
|
91
|
+
ipAddress?: string;
|
|
92
|
+
city?: string;
|
|
93
|
+
country?: string;
|
|
94
|
+
countryCode?: string;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
// 빌더에 넘기는 최소 엔티티 shape. better-auth 내부 타입을 그대로 쓰지 않고
|
|
98
|
+
// 필요한 필드만 선언하여 핸들러 레이어에서 좁혀서 전달한다.
|
|
99
|
+
export type UserSnapshot = {
|
|
100
|
+
id: string;
|
|
101
|
+
name?: string;
|
|
102
|
+
email?: string;
|
|
103
|
+
banned?: boolean;
|
|
104
|
+
banReason?: string | null;
|
|
105
|
+
banExpires?: Date | null;
|
|
106
|
+
};
|
|
107
|
+
export type SessionSnapshot = {
|
|
108
|
+
id: string;
|
|
109
|
+
userId: string;
|
|
110
|
+
loginMethod?: string | null;
|
|
111
|
+
userAgent?: string | null;
|
|
112
|
+
impersonatedBy?: string | null;
|
|
113
|
+
};
|
|
114
|
+
export type AccountSnapshot = {
|
|
115
|
+
id: string;
|
|
116
|
+
userId: string;
|
|
117
|
+
providerId: string;
|
|
118
|
+
};
|
|
119
|
+
export type VerificationSnapshot = {
|
|
120
|
+
id: string;
|
|
121
|
+
value: string;
|
|
122
|
+
};
|
|
123
|
+
export type OrganizationSnapshot = {
|
|
124
|
+
id: string;
|
|
125
|
+
slug?: string;
|
|
126
|
+
name?: string;
|
|
127
|
+
};
|
|
128
|
+
export type TeamSnapshot = {
|
|
129
|
+
id: string;
|
|
130
|
+
name?: string;
|
|
131
|
+
};
|
|
132
|
+
export type MemberSnapshot = {
|
|
133
|
+
id: string;
|
|
134
|
+
userId: string;
|
|
135
|
+
role?: string;
|
|
136
|
+
};
|
|
137
|
+
export type InvitationSnapshot = {
|
|
138
|
+
id: string;
|
|
139
|
+
email?: string;
|
|
140
|
+
role?: string;
|
|
141
|
+
teamId?: string | null;
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// 사용자 프로필 보조 (조회 실패 시 null)
|
|
145
|
+
export type UserProfileLite = { id: string; name?: string; email?: string } | null;
|
|
146
|
+
|
|
147
|
+
// 모든 빌더는 pure: input -> AuditLogEvent.
|
|
148
|
+
// 비동기 adapter 조회는 hook 레이어에서 수행하고, 조회 결과를 인자로 전달한다.
|
|
149
|
+
export type Builder<A extends readonly unknown[]> = (...args: A) => AuditLogEvent;
|