@arch-cadre/core 0.0.56 → 0.0.57
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/_virtual/_rolldown/runtime.cjs +1 -0
- package/dist/_virtual/_rolldown/runtime.mjs +1 -0
- package/dist/core/auth/augment.cjs +1 -0
- package/dist/core/auth/augment.d.cts +20 -0
- package/dist/core/auth/augment.d.cts.map +1 -0
- package/dist/core/auth/augment.d.mts +20 -0
- package/dist/core/auth/augment.d.mts.map +1 -0
- package/dist/core/auth/augment.mjs +2 -0
- package/dist/core/auth/augment.mjs.map +1 -0
- package/dist/core/auth/email-verification.cjs +1 -0
- package/dist/core/auth/email-verification.d.cts +62 -0
- package/dist/core/auth/email-verification.d.cts.map +1 -0
- package/dist/core/auth/email-verification.d.mts +62 -0
- package/dist/core/auth/email-verification.d.mts.map +1 -0
- package/dist/core/auth/email-verification.mjs +2 -0
- package/dist/core/auth/email-verification.mjs.map +1 -0
- package/dist/core/auth/logic.cjs +1 -0
- package/dist/core/auth/logic.d.cts +110 -0
- package/dist/core/auth/logic.d.cts.map +1 -0
- package/dist/core/auth/logic.d.mts +110 -0
- package/dist/core/auth/logic.d.mts.map +1 -0
- package/dist/core/auth/logic.mjs +2 -0
- package/dist/core/auth/logic.mjs.map +1 -0
- package/dist/core/auth/password-reset.cjs +1 -0
- package/dist/core/auth/password-reset.d.cts +39 -0
- package/dist/core/auth/password-reset.d.cts.map +1 -0
- package/dist/core/auth/password-reset.d.mts +39 -0
- package/dist/core/auth/password-reset.d.mts.map +1 -0
- package/dist/core/auth/password-reset.mjs +2 -0
- package/dist/core/auth/password-reset.mjs.map +1 -0
- package/dist/core/auth/rbac.cjs +1 -0
- package/dist/core/auth/rbac.d.cts +61 -0
- package/dist/core/auth/rbac.d.cts.map +1 -0
- package/dist/core/auth/rbac.d.mts +61 -0
- package/dist/core/auth/rbac.d.mts.map +1 -0
- package/dist/core/auth/rbac.mjs +2 -0
- package/dist/core/auth/rbac.mjs.map +1 -0
- package/dist/core/auth/session.cjs +1 -0
- package/dist/core/auth/session.d.cts +54 -0
- package/dist/core/auth/session.d.cts.map +1 -0
- package/dist/core/auth/session.d.mts +54 -0
- package/dist/core/auth/session.d.mts.map +1 -0
- package/dist/core/auth/session.mjs +2 -0
- package/dist/core/auth/session.mjs.map +1 -0
- package/dist/core/auth/types.d.cts +55 -0
- package/dist/core/auth/types.d.cts.map +1 -0
- package/dist/core/auth/types.d.mts +55 -0
- package/dist/core/auth/types.d.mts.map +1 -0
- package/dist/core/auth/utils/encode.cjs +1 -0
- package/dist/core/auth/utils/encode.d.cts +15 -0
- package/dist/core/auth/utils/encode.d.cts.map +1 -0
- package/dist/core/auth/utils/encode.d.mts +15 -0
- package/dist/core/auth/utils/encode.d.mts.map +1 -0
- package/dist/core/auth/utils/encode.mjs +2 -0
- package/dist/core/auth/utils/encode.mjs.map +1 -0
- package/dist/core/auth/utils/encryption.cjs +1 -0
- package/dist/core/auth/utils/{encryption.d.ts → encryption.d.cts} +8 -5
- package/dist/core/auth/utils/encryption.d.cts.map +1 -0
- package/dist/core/auth/utils/encryption.d.mts +28 -0
- package/dist/core/auth/utils/encryption.d.mts.map +1 -0
- package/dist/core/auth/utils/encryption.mjs +2 -0
- package/dist/core/auth/utils/encryption.mjs.map +1 -0
- package/dist/core/auth/validation.cjs +1 -0
- package/dist/core/auth/validation.d.cts +48 -0
- package/dist/core/auth/validation.d.cts.map +1 -0
- package/dist/core/auth/validation.d.mts +48 -0
- package/dist/core/auth/validation.d.mts.map +1 -0
- package/dist/core/auth/validation.mjs +2 -0
- package/dist/core/auth/validation.mjs.map +1 -0
- package/dist/core/bootstrap.cjs +1 -0
- package/dist/core/bootstrap.d.cts +5 -0
- package/dist/core/bootstrap.d.cts.map +1 -0
- package/dist/core/bootstrap.d.mts +5 -0
- package/dist/core/bootstrap.d.mts.map +1 -0
- package/dist/core/bootstrap.mjs +2 -0
- package/dist/core/bootstrap.mjs.map +1 -0
- package/dist/core/config.cjs +1 -0
- package/dist/core/config.d.cts +11 -0
- package/dist/core/config.d.cts.map +1 -0
- package/dist/core/config.d.mts +11 -0
- package/dist/core/config.d.mts.map +1 -0
- package/dist/core/config.mjs +2 -0
- package/dist/core/config.mjs.map +1 -0
- package/dist/core/config.server.cjs +1 -0
- package/dist/core/config.server.d.cts +16 -0
- package/dist/core/config.server.d.cts.map +1 -0
- package/dist/core/config.server.d.mts +16 -0
- package/dist/core/config.server.d.mts.map +1 -0
- package/dist/core/config.server.mjs +2 -0
- package/dist/core/config.server.mjs.map +1 -0
- package/dist/core/event-bus.cjs +1 -0
- package/dist/core/event-bus.d.cts +17 -0
- package/dist/core/event-bus.d.cts.map +1 -0
- package/dist/core/event-bus.d.mts +17 -0
- package/dist/core/event-bus.d.mts.map +1 -0
- package/dist/core/event-bus.mjs +2 -0
- package/dist/core/event-bus.mjs.map +1 -0
- package/dist/core/filesystem/index.cjs +1 -0
- package/dist/core/filesystem/index.mjs +2 -0
- package/dist/core/filesystem/index.mjs.map +1 -0
- package/dist/core/filesystem/providers/local.cjs +1 -0
- package/dist/core/filesystem/providers/local.mjs +2 -0
- package/dist/core/filesystem/providers/local.mjs.map +1 -0
- package/dist/core/filesystem/service.cjs +1 -0
- package/dist/core/filesystem/service.d.cts +19 -0
- package/dist/core/filesystem/service.d.cts.map +1 -0
- package/dist/core/filesystem/service.d.mts +19 -0
- package/dist/core/filesystem/service.d.mts.map +1 -0
- package/dist/core/filesystem/service.mjs +2 -0
- package/dist/core/filesystem/service.mjs.map +1 -0
- package/dist/core/filesystem/types.d.cts +22 -0
- package/dist/core/filesystem/types.d.cts.map +1 -0
- package/dist/core/filesystem/types.d.mts +22 -0
- package/dist/core/filesystem/types.d.mts.map +1 -0
- package/dist/core/notifications/actions.cjs +1 -0
- package/dist/core/notifications/actions.d.cts +58 -0
- package/dist/core/notifications/actions.d.cts.map +1 -0
- package/dist/core/notifications/actions.d.mts +58 -0
- package/dist/core/notifications/actions.d.mts.map +1 -0
- package/dist/core/notifications/actions.mjs +2 -0
- package/dist/core/notifications/actions.mjs.map +1 -0
- package/dist/core/notifications/index.cjs +1 -0
- package/dist/core/notifications/index.mjs +1 -0
- package/dist/core/notifications/service.cjs +1 -0
- package/dist/core/notifications/service.d.cts +9 -0
- package/dist/core/notifications/service.d.cts.map +1 -0
- package/dist/core/notifications/service.d.mts +9 -0
- package/dist/core/notifications/service.d.mts.map +1 -0
- package/dist/core/notifications/service.mjs +2 -0
- package/dist/core/notifications/service.mjs.map +1 -0
- package/dist/core/notifications/types.d.cts +21 -0
- package/dist/core/notifications/types.d.cts.map +1 -0
- package/dist/core/notifications/types.d.mts +21 -0
- package/dist/core/notifications/types.d.mts.map +1 -0
- package/dist/core/setup.cjs +1 -0
- package/dist/core/setup.d.cts +9 -0
- package/dist/core/setup.d.cts.map +1 -0
- package/dist/core/setup.d.mts +9 -0
- package/dist/core/setup.d.mts.map +1 -0
- package/dist/core/setup.mjs +2 -0
- package/dist/core/setup.mjs.map +1 -0
- package/dist/core/types.d.cts +13 -0
- package/dist/core/types.d.cts.map +1 -0
- package/dist/core/types.d.mts +13 -0
- package/dist/core/types.d.mts.map +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +8 -0
- package/dist/index.d.mts +8 -0
- package/dist/index.mjs +1 -0
- package/dist/server/auth/email.cjs +1 -0
- package/dist/server/auth/email.d.cts +13 -0
- package/dist/server/auth/email.d.cts.map +1 -0
- package/dist/server/auth/email.d.mts +13 -0
- package/dist/server/auth/email.d.mts.map +1 -0
- package/dist/server/auth/email.mjs +2 -0
- package/dist/server/auth/email.mjs.map +1 -0
- package/dist/server/auth/password.cjs +1 -0
- package/dist/server/auth/{password.d.ts → password.d.cts} +7 -4
- package/dist/server/auth/password.d.cts.map +1 -0
- package/dist/server/auth/{password.js → password.d.mts} +7 -14
- package/dist/server/auth/password.d.mts.map +1 -0
- package/dist/server/auth/password.mjs +2 -0
- package/dist/server/auth/password.mjs.map +1 -0
- package/dist/server/auth/user.cjs +1 -0
- package/dist/server/auth/user.d.cts +58 -0
- package/dist/server/auth/user.d.cts.map +1 -0
- package/dist/server/auth/user.d.mts +58 -0
- package/dist/server/auth/user.d.mts.map +1 -0
- package/dist/server/auth/user.mjs +2 -0
- package/dist/server/auth/user.mjs.map +1 -0
- package/dist/server/database/inject.cjs +1 -0
- package/dist/server/database/inject.d.cts +15 -0
- package/dist/server/database/inject.d.cts.map +1 -0
- package/dist/server/database/inject.d.mts +15 -0
- package/dist/server/database/inject.d.mts.map +1 -0
- package/dist/server/database/inject.mjs +2 -0
- package/dist/server/database/inject.mjs.map +1 -0
- package/dist/server/database/schema.cjs +1 -0
- package/dist/server/database/schema.d.cts +3065 -0
- package/dist/server/database/{schema.d.ts.map → schema.d.cts.map} +1 -1
- package/dist/server/database/schema.d.mts +3065 -0
- package/dist/server/database/schema.d.mts.map +1 -0
- package/dist/server/database/schema.mjs +2 -0
- package/dist/server/database/schema.mjs.map +1 -0
- package/dist/server/emails/index.cjs +1 -0
- package/dist/server/emails/index.d.cts +26 -0
- package/dist/server/emails/index.d.cts.map +1 -0
- package/dist/server/emails/index.d.mts +26 -0
- package/dist/server/emails/index.d.mts.map +1 -0
- package/dist/server/emails/index.mjs +2 -0
- package/dist/server/emails/index.mjs.map +1 -0
- package/dist/server.cjs +1 -0
- package/dist/server.d.cts +26 -0
- package/dist/server.d.mts +26 -0
- package/dist/server.mjs +1 -0
- package/package.json +15 -7
- package/dist/core/auth/augment.d.ts +0 -18
- package/dist/core/auth/augment.d.ts.map +0 -1
- package/dist/core/auth/augment.js +0 -45
- package/dist/core/auth/email-verification.d.ts +0 -58
- package/dist/core/auth/email-verification.d.ts.map +0 -1
- package/dist/core/auth/email-verification.js +0 -105
- package/dist/core/auth/events.d.ts +0 -53
- package/dist/core/auth/events.d.ts.map +0 -1
- package/dist/core/auth/events.js +0 -1
- package/dist/core/auth/logic.d.ts +0 -106
- package/dist/core/auth/logic.d.ts.map +0 -1
- package/dist/core/auth/logic.js +0 -245
- package/dist/core/auth/password-reset.d.ts +0 -35
- package/dist/core/auth/password-reset.d.ts.map +0 -1
- package/dist/core/auth/password-reset.js +0 -122
- package/dist/core/auth/rbac.d.ts +0 -56
- package/dist/core/auth/rbac.d.ts.map +0 -1
- package/dist/core/auth/rbac.js +0 -134
- package/dist/core/auth/session.d.ts +0 -50
- package/dist/core/auth/session.d.ts.map +0 -1
- package/dist/core/auth/session.js +0 -152
- package/dist/core/auth/types.d.ts +0 -52
- package/dist/core/auth/types.d.ts.map +0 -1
- package/dist/core/auth/types.js +0 -1
- package/dist/core/auth/utils/encode.d.ts +0 -12
- package/dist/core/auth/utils/encode.d.ts.map +0 -1
- package/dist/core/auth/utils/encode.js +0 -20
- package/dist/core/auth/utils/encryption.d.ts.map +0 -1
- package/dist/core/auth/utils/encryption.js +0 -62
- package/dist/core/auth/validation.d.ts +0 -44
- package/dist/core/auth/validation.d.ts.map +0 -1
- package/dist/core/auth/validation.js +0 -41
- package/dist/core/bootstrap.d.ts +0 -2
- package/dist/core/bootstrap.d.ts.map +0 -1
- package/dist/core/bootstrap.js +0 -51
- package/dist/core/config.d.ts +0 -9
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js +0 -3
- package/dist/core/config.server.d.ts +0 -12
- package/dist/core/config.server.d.ts.map +0 -1
- package/dist/core/config.server.js +0 -61
- package/dist/core/event-bus.d.ts +0 -14
- package/dist/core/event-bus.d.ts.map +0 -1
- package/dist/core/event-bus.js +0 -51
- package/dist/core/filesystem/index.d.ts +0 -4
- package/dist/core/filesystem/index.d.ts.map +0 -1
- package/dist/core/filesystem/index.js +0 -10
- package/dist/core/filesystem/providers/local.d.ts +0 -8
- package/dist/core/filesystem/providers/local.d.ts.map +0 -1
- package/dist/core/filesystem/providers/local.js +0 -42
- package/dist/core/filesystem/service.d.ts +0 -16
- package/dist/core/filesystem/service.d.ts.map +0 -1
- package/dist/core/filesystem/service.js +0 -51
- package/dist/core/filesystem/types.d.ts +0 -19
- package/dist/core/filesystem/types.d.ts.map +0 -1
- package/dist/core/filesystem/types.js +0 -1
- package/dist/core/notifications/actions.d.ts +0 -54
- package/dist/core/notifications/actions.d.ts.map +0 -1
- package/dist/core/notifications/actions.js +0 -43
- package/dist/core/notifications/index.d.ts +0 -4
- package/dist/core/notifications/index.d.ts.map +0 -1
- package/dist/core/notifications/index.js +0 -3
- package/dist/core/notifications/service.d.ts +0 -7
- package/dist/core/notifications/service.d.ts.map +0 -1
- package/dist/core/notifications/service.js +0 -32
- package/dist/core/notifications/types.d.ts +0 -17
- package/dist/core/notifications/types.d.ts.map +0 -1
- package/dist/core/notifications/types.js +0 -1
- package/dist/core/setup.d.ts +0 -6
- package/dist/core/setup.d.ts.map +0 -1
- package/dist/core/setup.js +0 -25
- package/dist/core/types.d.ts +0 -10
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -1
- package/dist/index.d.ts +0 -8
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -16
- package/dist/server/auth/email.d.ts +0 -10
- package/dist/server/auth/email.d.ts.map +0 -1
- package/dist/server/auth/email.js +0 -20
- package/dist/server/auth/password.d.ts.map +0 -1
- package/dist/server/auth/types.d.ts +0 -13
- package/dist/server/auth/types.d.ts.map +0 -1
- package/dist/server/auth/types.js +0 -1
- package/dist/server/auth/user.d.ts +0 -54
- package/dist/server/auth/user.d.ts.map +0 -1
- package/dist/server/auth/user.js +0 -222
- package/dist/server/database/inject.d.ts +0 -11
- package/dist/server/database/inject.d.ts.map +0 -1
- package/dist/server/database/inject.js +0 -29
- package/dist/server/database/schema.d.ts +0 -3056
- package/dist/server/database/schema.js +0 -205
- package/dist/server/database/types.d.ts +0 -12
- package/dist/server/database/types.d.ts.map +0 -1
- package/dist/server/database/types.js +0 -1
- package/dist/server/emails/index.d.ts +0 -23
- package/dist/server/emails/index.d.ts.map +0 -1
- package/dist/server/emails/index.js +0 -67
- package/dist/server.d.ts +0 -25
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -32
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { augmentSession, augmentUser, registerIdentityAugmenter, registerPasswordResetSessionAugmenter, registerSessionAugmenter } from "./augment";
|
|
2
|
-
import type { AuthResponse, FullUser, Session, SessionFlags, User, UserPermission, UserRole } from "./types";
|
|
3
|
-
import { type LoginInput, type RegisterInput } from "./validation";
|
|
4
|
-
/**
|
|
5
|
-
* Registry for login validators (e.g. 2FA module)
|
|
6
|
-
*/
|
|
7
|
-
type AuthValidator = (userId: string) => Promise<AuthResponse | null>;
|
|
8
|
-
/**
|
|
9
|
-
* Registry for Security Requirements (e.g. checking if 2FA is needed for a session)
|
|
10
|
-
*/
|
|
11
|
-
type SecurityRequirement = (session: Session, user: FullUser) => Promise<{
|
|
12
|
-
satisfied: boolean;
|
|
13
|
-
redirect?: string;
|
|
14
|
-
} | null>;
|
|
15
|
-
/**
|
|
16
|
-
* Registry for password reset validators (e.g. 2FA module requiring check during reset)
|
|
17
|
-
*/
|
|
18
|
-
type PasswordResetValidator = (userId: string) => Promise<AuthResponse | null>;
|
|
19
|
-
/**
|
|
20
|
-
* Registry for email verification validators
|
|
21
|
-
*/
|
|
22
|
-
type EmailVerificationValidator = (userId: string) => Promise<AuthResponse | null>;
|
|
23
|
-
export declare function registerAuthValidator(validator: AuthValidator): Promise<void>;
|
|
24
|
-
export declare function registerPasswordResetValidator(validator: PasswordResetValidator): Promise<void>;
|
|
25
|
-
export declare function registerEmailVerificationValidator(validator: EmailVerificationValidator): Promise<void>;
|
|
26
|
-
export { registerIdentityAugmenter, registerSessionAugmenter, registerPasswordResetSessionAugmenter, augmentUser, augmentSession, };
|
|
27
|
-
export declare function registerSecurityRequirement(requirement: SecurityRequirement): Promise<void>;
|
|
28
|
-
export declare function runPasswordResetValidators(userId: string): Promise<AuthResponse | null>;
|
|
29
|
-
export declare function runEmailVerificationValidators(userId: string): Promise<AuthResponse | null>;
|
|
30
|
-
/**
|
|
31
|
-
* Augments a base user with data from all registered modules.
|
|
32
|
-
* This is now just a wrapper that includes core RBAC data.
|
|
33
|
-
*/
|
|
34
|
-
export declare function performFullUserAugmentation(user: User): Promise<FullUser>;
|
|
35
|
-
/**
|
|
36
|
-
* Checks if the current session satisfies all registered security requirements.
|
|
37
|
-
*/
|
|
38
|
-
export declare function checkSecurity(session: Session, user: FullUser, requiredRoles?: UserRole[], requiredPermissions?: UserPermission[], fallbackRedirect?: string): Promise<{
|
|
39
|
-
satisfied: boolean;
|
|
40
|
-
redirect: string | undefined;
|
|
41
|
-
} | {
|
|
42
|
-
satisfied: boolean;
|
|
43
|
-
redirect?: undefined;
|
|
44
|
-
}>;
|
|
45
|
-
/**
|
|
46
|
-
* Sign In Logic
|
|
47
|
-
*/
|
|
48
|
-
export declare function signIn(data: LoginInput): Promise<AuthResponse>;
|
|
49
|
-
/**
|
|
50
|
-
* Sign Up Logic
|
|
51
|
-
*/
|
|
52
|
-
export declare function signUp(data: RegisterInput): Promise<{
|
|
53
|
-
session: {
|
|
54
|
-
[x: string]: any;
|
|
55
|
-
id: string;
|
|
56
|
-
createdAt: Date;
|
|
57
|
-
updatedAt: Date | null;
|
|
58
|
-
userId: string;
|
|
59
|
-
active_organization_id: string | null;
|
|
60
|
-
expiresAt: Date;
|
|
61
|
-
};
|
|
62
|
-
user: {
|
|
63
|
-
[x: string]: any;
|
|
64
|
-
id: string;
|
|
65
|
-
email: string;
|
|
66
|
-
name: string;
|
|
67
|
-
password: string | null;
|
|
68
|
-
image: string | null;
|
|
69
|
-
recovery_code: Buffer<ArrayBufferLike>;
|
|
70
|
-
emailVerifiedAt: Date | null;
|
|
71
|
-
createdAt: Date;
|
|
72
|
-
updatedAt: Date | null;
|
|
73
|
-
roles: UserRole[];
|
|
74
|
-
permissions: UserPermission[];
|
|
75
|
-
};
|
|
76
|
-
}>;
|
|
77
|
-
/**
|
|
78
|
-
* Finalizes login after a challenge
|
|
79
|
-
*/
|
|
80
|
-
export declare function finalizeLogin(userId: string, flags: SessionFlags): Promise<{
|
|
81
|
-
session: {
|
|
82
|
-
[x: string]: any;
|
|
83
|
-
id: string;
|
|
84
|
-
createdAt: Date;
|
|
85
|
-
updatedAt: Date | null;
|
|
86
|
-
userId: string;
|
|
87
|
-
active_organization_id: string | null;
|
|
88
|
-
expiresAt: Date;
|
|
89
|
-
} | null;
|
|
90
|
-
user: {
|
|
91
|
-
id: string;
|
|
92
|
-
email: string;
|
|
93
|
-
name: string;
|
|
94
|
-
password: string | null;
|
|
95
|
-
image: string | null;
|
|
96
|
-
recovery_code: Buffer<ArrayBufferLike>;
|
|
97
|
-
emailVerifiedAt: Date | null;
|
|
98
|
-
createdAt: Date;
|
|
99
|
-
updatedAt: Date | null;
|
|
100
|
-
} | null;
|
|
101
|
-
}>;
|
|
102
|
-
/**
|
|
103
|
-
* Sign Out
|
|
104
|
-
*/
|
|
105
|
-
export declare function signOut(): Promise<void>;
|
|
106
|
-
//# sourceMappingURL=logic.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../../src/core/auth/logic.ts"],"names":[],"mappings":"AAuBA,OAAO,EACL,cAAc,EACd,WAAW,EACX,yBAAyB,EACzB,qCAAqC,EACrC,wBAAwB,EACzB,MAAM,WAAW,CAAC;AAcnB,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,cAAc,EACd,QAAQ,EACT,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,KAAK,UAAU,EAEf,KAAK,aAAa,EAEnB,MAAM,cAAc,CAAC;AA6DtB;;GAEG;AACH,KAAK,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;AAEtE;;GAEG;AACH,KAAK,mBAAmB,GAAG,CACzB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,QAAQ,KACX,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAE/D;;GAEG;AACH,KAAK,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;AAE/E;;GAEG;AACH,KAAK,0BAA0B,GAAG,CAChC,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;AA6BlC,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,aAAa,iBAEnE;AAED,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,sBAAsB,iBAGlC;AAED,wBAAsB,kCAAkC,CACtD,SAAS,EAAE,0BAA0B,iBAGtC;AAED,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,qCAAqC,EACrC,WAAW,EACX,cAAc,GACf,CAAC;AAEF,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,mBAAmB,iBAGjC;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAM9B;AAED,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAM9B;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,QAAQ,CAAC,CAGnB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,QAAQ,EACd,aAAa,CAAC,EAAE,QAAQ,EAAE,EAC1B,mBAAmB,CAAC,EAAE,cAAc,EAAE,EACtC,gBAAgB,CAAC,EAAE,MAAM;;;;;;GA0D1B;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAgCpE;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;GAmC/C;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY;;;;;;;;;;;;;;;;;;;;;GAetE;AAED;;GAEG;AACH,wBAAsB,OAAO,kBAS5B"}
|
package/dist/core/auth/logic.js
DELETED
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
"use server";
|
|
2
|
-
var _a, _b, _c, _d;
|
|
3
|
-
import { eq, inArray } from "drizzle-orm";
|
|
4
|
-
import { verifyPasswordHash, verifyPasswordStrength, } from "../../server/auth/password";
|
|
5
|
-
import { createUser, getUserById, getUserFromEmail, getUserPasswordHash, verifyUsernameInput, } from "../../server/auth/user";
|
|
6
|
-
import { db } from "../../server/database/inject";
|
|
7
|
-
import { permissionsTable, rolesTable, rolesToPermissionsTable, usersToPermissionsTable, usersToRolesTable, } from "../../server/database/schema";
|
|
8
|
-
import { eventBus } from "../event-bus";
|
|
9
|
-
import { augmentSession, augmentUser, registerIdentityAugmenter, registerPasswordResetSessionAugmenter, registerSessionAugmenter, } from "./augment";
|
|
10
|
-
import { createEmailVerificationRequest, sendVerificationEmail, setEmailVerificationRequestCookie, } from "./email-verification";
|
|
11
|
-
import { createSession, deleteSessionTokenCookie, generateSessionToken, getCurrentSession, invalidateSession, setSessionTokenCookie, } from "./session";
|
|
12
|
-
import { loginSchema, registerSchema, } from "./validation";
|
|
13
|
-
/**
|
|
14
|
-
* Podstawowy moduł rozszerzający tożsamość dla ról i uprawnień
|
|
15
|
-
*/
|
|
16
|
-
async function coreRbacAugmenter(user) {
|
|
17
|
-
try {
|
|
18
|
-
// 1. Fetch direct roles
|
|
19
|
-
const userRoles = await db
|
|
20
|
-
.select({ name: rolesTable.name })
|
|
21
|
-
.from(usersToRolesTable)
|
|
22
|
-
.innerJoin(rolesTable, eq(usersToRolesTable.roleId, rolesTable.id))
|
|
23
|
-
.where(eq(usersToRolesTable.userId, user.id));
|
|
24
|
-
const roles = userRoles.map((r) => r.name);
|
|
25
|
-
// 2. Fetch direct permissions
|
|
26
|
-
const userDirectPerms = await db
|
|
27
|
-
.select({ name: permissionsTable.name })
|
|
28
|
-
.from(usersToPermissionsTable)
|
|
29
|
-
.innerJoin(permissionsTable, eq(usersToPermissionsTable.permissionId, permissionsTable.id))
|
|
30
|
-
.where(eq(usersToPermissionsTable.userId, user.id));
|
|
31
|
-
const directPerms = userDirectPerms.map((p) => p.name);
|
|
32
|
-
// 3. Fetch permissions from roles
|
|
33
|
-
let rolePerms = [];
|
|
34
|
-
if (roles.length > 0) {
|
|
35
|
-
const roleIdsResult = await db
|
|
36
|
-
.select({ id: rolesTable.id })
|
|
37
|
-
.from(rolesTable)
|
|
38
|
-
.where(inArray(rolesTable.name, roles));
|
|
39
|
-
const roleIds = roleIdsResult.map((r) => r.id);
|
|
40
|
-
if (roleIds.length > 0) {
|
|
41
|
-
const rolePermsData = await db
|
|
42
|
-
.select({ name: permissionsTable.name })
|
|
43
|
-
.from(rolesToPermissionsTable)
|
|
44
|
-
.innerJoin(permissionsTable, eq(rolesToPermissionsTable.permissionId, permissionsTable.id))
|
|
45
|
-
.where(inArray(rolesToPermissionsTable.roleId, roleIds));
|
|
46
|
-
rolePerms = rolePermsData.map((p) => p.name);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return {
|
|
50
|
-
roles,
|
|
51
|
-
permissions: Array.from(new Set([...directPerms, ...rolePerms])),
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
console.error("[Auth:RBAC] Failed to augment user:", error);
|
|
56
|
-
return { roles: [], permissions: [] };
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
const globalForAuth = globalThis;
|
|
60
|
-
const authValidators = (_a = globalForAuth.__KRYO_AUTH_VALIDATORS__) !== null && _a !== void 0 ? _a : new Set();
|
|
61
|
-
const securityRequirements = (_b = globalForAuth.__KRYO_SECURITY_REQUIREMENTS__) !== null && _b !== void 0 ? _b : new Set();
|
|
62
|
-
const passwordResetValidators = (_c = globalForAuth.__KRYO_PASSWORD_RESET_VALIDATORS__) !== null && _c !== void 0 ? _c : new Set();
|
|
63
|
-
const emailVerificationValidators = (_d = globalForAuth.__KRYO_EMAIL_VERIFICATION_VALIDATORS__) !== null && _d !== void 0 ? _d : new Set();
|
|
64
|
-
globalForAuth.__KRYO_AUTH_VALIDATORS__ = authValidators;
|
|
65
|
-
globalForAuth.__KRYO_SECURITY_REQUIREMENTS__ = securityRequirements;
|
|
66
|
-
globalForAuth.__KRYO_PASSWORD_RESET_VALIDATORS__ = passwordResetValidators;
|
|
67
|
-
globalForAuth.__KRYO_EMAIL_VERIFICATION_VALIDATORS__ =
|
|
68
|
-
emailVerificationValidators;
|
|
69
|
-
export async function registerAuthValidator(validator) {
|
|
70
|
-
authValidators.add(validator);
|
|
71
|
-
}
|
|
72
|
-
export async function registerPasswordResetValidator(validator) {
|
|
73
|
-
passwordResetValidators.add(validator);
|
|
74
|
-
}
|
|
75
|
-
export async function registerEmailVerificationValidator(validator) {
|
|
76
|
-
emailVerificationValidators.add(validator);
|
|
77
|
-
}
|
|
78
|
-
export { registerIdentityAugmenter, registerSessionAugmenter, registerPasswordResetSessionAugmenter, augmentUser, augmentSession, };
|
|
79
|
-
export async function registerSecurityRequirement(requirement) {
|
|
80
|
-
securityRequirements.add(requirement);
|
|
81
|
-
}
|
|
82
|
-
export async function runPasswordResetValidators(userId) {
|
|
83
|
-
for (const validator of passwordResetValidators) {
|
|
84
|
-
const interception = await validator(userId);
|
|
85
|
-
if (interception)
|
|
86
|
-
return interception;
|
|
87
|
-
}
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
|
-
export async function runEmailVerificationValidators(userId) {
|
|
91
|
-
for (const validator of emailVerificationValidators) {
|
|
92
|
-
const interception = await validator(userId);
|
|
93
|
-
if (interception)
|
|
94
|
-
return interception;
|
|
95
|
-
}
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Augments a base user with data from all registered modules.
|
|
100
|
-
* This is now just a wrapper that includes core RBAC data.
|
|
101
|
-
*/
|
|
102
|
-
export async function performFullUserAugmentation(user) {
|
|
103
|
-
const coreRbacData = await coreRbacAugmenter(user);
|
|
104
|
-
return await augmentUser(user, coreRbacData);
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Checks if the current session satisfies all registered security requirements.
|
|
108
|
-
*/
|
|
109
|
-
export async function checkSecurity(session, user, requiredRoles, requiredPermissions, fallbackRedirect) {
|
|
110
|
-
var _a;
|
|
111
|
-
if (!user) {
|
|
112
|
-
console.warn("User is required for security check");
|
|
113
|
-
return { satisfied: false, redirect: fallbackRedirect !== null && fallbackRedirect !== void 0 ? fallbackRedirect : "/signin" };
|
|
114
|
-
}
|
|
115
|
-
const userRoles = Array.isArray(user.roles) ? user.roles : [];
|
|
116
|
-
const userPermissions = Array.isArray(user.permissions)
|
|
117
|
-
? user.permissions
|
|
118
|
-
: [];
|
|
119
|
-
// 1. Core Role Check (At least one role must match)
|
|
120
|
-
if (requiredRoles && requiredRoles.length > 0) {
|
|
121
|
-
const hasRole = requiredRoles.some((role) => userRoles.includes(role));
|
|
122
|
-
if (!hasRole) {
|
|
123
|
-
console.warn(`User lacks required roles: ${requiredRoles.join(", ")}`);
|
|
124
|
-
return {
|
|
125
|
-
satisfied: false,
|
|
126
|
-
redirect: fallbackRedirect,
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
// 2. Core Permission Check (ALL permissions must match)
|
|
131
|
-
if (requiredPermissions && requiredPermissions.length > 0) {
|
|
132
|
-
const hasAllPermissions = requiredPermissions.every((perm) => userPermissions.includes(perm));
|
|
133
|
-
if (!hasAllPermissions) {
|
|
134
|
-
console.warn(`User lacks required permissions: ${requiredPermissions.join(", ")}`);
|
|
135
|
-
return {
|
|
136
|
-
satisfied: false,
|
|
137
|
-
redirect: fallbackRedirect,
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
// 3. Modular Requirements Check
|
|
142
|
-
if (securityRequirements) {
|
|
143
|
-
for (const requirement of securityRequirements) {
|
|
144
|
-
try {
|
|
145
|
-
const result = await requirement(session, user);
|
|
146
|
-
if (result && !result.satisfied) {
|
|
147
|
-
return {
|
|
148
|
-
...result,
|
|
149
|
-
redirect: (_a = result.redirect) !== null && _a !== void 0 ? _a : fallbackRedirect,
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
catch (error) {
|
|
154
|
-
console.error("[Auth:Security] Requirement failed:", error);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
return { satisfied: true };
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Sign In Logic
|
|
162
|
-
*/
|
|
163
|
-
export async function signIn(data) {
|
|
164
|
-
const { email, password } = await loginSchema.parseAsync(data);
|
|
165
|
-
const user = await getUserFromEmail(email);
|
|
166
|
-
if (!user) {
|
|
167
|
-
return { status: "ERROR", message: "Invalid email or password" };
|
|
168
|
-
}
|
|
169
|
-
const passwordHash = await getUserPasswordHash(user.id);
|
|
170
|
-
if (!passwordHash || !(await verifyPasswordHash(passwordHash, password))) {
|
|
171
|
-
return { status: "ERROR", message: "Invalid email or password" };
|
|
172
|
-
}
|
|
173
|
-
// Interception Layer
|
|
174
|
-
for (const validator of authValidators) {
|
|
175
|
-
const interception = await validator(user.id);
|
|
176
|
-
if (interception)
|
|
177
|
-
return interception;
|
|
178
|
-
}
|
|
179
|
-
const sessionFlags = {};
|
|
180
|
-
const sessionToken = await generateSessionToken();
|
|
181
|
-
const session = await createSession(sessionToken, user.id, sessionFlags);
|
|
182
|
-
await setSessionTokenCookie(sessionToken, session.expiresAt);
|
|
183
|
-
const fullUser = await performFullUserAugmentation(user);
|
|
184
|
-
await eventBus.publish("auth:session-created", { session, user: fullUser });
|
|
185
|
-
return {
|
|
186
|
-
status: "SUCCESS",
|
|
187
|
-
session: { ...session },
|
|
188
|
-
user: { ...fullUser },
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Sign Up Logic
|
|
193
|
-
*/
|
|
194
|
-
export async function signUp(data) {
|
|
195
|
-
const { email, username, password } = registerSchema.parse(data);
|
|
196
|
-
if (!(await verifyUsernameInput(username))) {
|
|
197
|
-
throw new Error("Invalid username");
|
|
198
|
-
}
|
|
199
|
-
if (!(await verifyPasswordStrength(password))) {
|
|
200
|
-
throw new Error("Weak password");
|
|
201
|
-
}
|
|
202
|
-
const user = await createUser(email, username, password);
|
|
203
|
-
const verificationRequest = await createEmailVerificationRequest(user.id, user.email);
|
|
204
|
-
await sendVerificationEmail(verificationRequest.email, verificationRequest.code);
|
|
205
|
-
await setEmailVerificationRequestCookie(verificationRequest);
|
|
206
|
-
const sessionFlags = {};
|
|
207
|
-
const sessionToken = await generateSessionToken();
|
|
208
|
-
const session = await createSession(sessionToken, user.id, sessionFlags);
|
|
209
|
-
await setSessionTokenCookie(sessionToken, session.expiresAt);
|
|
210
|
-
const fullUser = await performFullUserAugmentation(user);
|
|
211
|
-
await eventBus.publish("auth:session-created", { session, user: fullUser });
|
|
212
|
-
return {
|
|
213
|
-
session: { ...session },
|
|
214
|
-
user: { ...fullUser },
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Finalizes login after a challenge
|
|
219
|
-
*/
|
|
220
|
-
export async function finalizeLogin(userId, flags) {
|
|
221
|
-
const sessionToken = await generateSessionToken();
|
|
222
|
-
const session = await createSession(sessionToken, userId, flags);
|
|
223
|
-
await setSessionTokenCookie(sessionToken, session.expiresAt);
|
|
224
|
-
const user = await getUserById(userId);
|
|
225
|
-
if (user) {
|
|
226
|
-
await eventBus.publish("auth:session-created", { session, user });
|
|
227
|
-
}
|
|
228
|
-
return {
|
|
229
|
-
session: session ? { ...session } : null,
|
|
230
|
-
user: user ? { ...user } : null,
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Sign Out
|
|
235
|
-
*/
|
|
236
|
-
export async function signOut() {
|
|
237
|
-
const { session, user } = await getCurrentSession();
|
|
238
|
-
if (session) {
|
|
239
|
-
if (user) {
|
|
240
|
-
await eventBus.publish("auth:signed-out", { userId: user.id });
|
|
241
|
-
}
|
|
242
|
-
await invalidateSession(session.id);
|
|
243
|
-
await deleteSessionTokenCookie();
|
|
244
|
-
}
|
|
245
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { PasswordResetAuthSession, PasswordResetSession } from "./types";
|
|
2
|
-
/**
|
|
3
|
-
* Creates a new password reset session.
|
|
4
|
-
*/
|
|
5
|
-
export declare function createPasswordResetSession(token: string, userId: string, email: string): Promise<PasswordResetSession>;
|
|
6
|
-
/**
|
|
7
|
-
* Validates the password reset session token and retrieves user data.
|
|
8
|
-
* The user data is augmented by registered modules (e.g. 2FA).
|
|
9
|
-
*/
|
|
10
|
-
export declare function validatePasswordResetSessionToken(token: string): Promise<PasswordResetAuthSession>;
|
|
11
|
-
/**
|
|
12
|
-
* Marks the password reset session as email verified.
|
|
13
|
-
*/
|
|
14
|
-
export declare function setPasswordResetSessionAsEmailVerified(sessionId: string): Promise<void>;
|
|
15
|
-
/**
|
|
16
|
-
* Invalidates all password reset sessions for a user.
|
|
17
|
-
*/
|
|
18
|
-
export declare function invalidateUserPasswordResetSessions(userId: string): Promise<void>;
|
|
19
|
-
/**
|
|
20
|
-
* Validates the current password reset session from cookies.
|
|
21
|
-
*/
|
|
22
|
-
export declare function getCurrentPasswordResetSession(): Promise<PasswordResetAuthSession>;
|
|
23
|
-
/**
|
|
24
|
-
* Sets the password reset session token cookie.
|
|
25
|
-
*/
|
|
26
|
-
export declare function setPasswordResetSessionTokenCookie(token: string, expiresAt: Date): Promise<void>;
|
|
27
|
-
/**
|
|
28
|
-
* Deletes the password reset session token cookie.
|
|
29
|
-
*/
|
|
30
|
-
export declare function deletePasswordResetSessionTokenCookie(): Promise<void>;
|
|
31
|
-
/**
|
|
32
|
-
* Sends a password reset email with the OTP code.
|
|
33
|
-
*/
|
|
34
|
-
export declare function sendPasswordResetEmail(email: string, code: string): Promise<void>;
|
|
35
|
-
//# sourceMappingURL=password-reset.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"password-reset.d.ts","sourceRoot":"","sources":["../../../src/core/auth/password-reset.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAG9E;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,oBAAoB,CAAC,CAe/B;AAED;;;GAGG;AACH,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,wBAAwB,CAAC,CAoCnC;AAED;;GAEG;AACH,wBAAsB,sCAAsC,CAC1D,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,mCAAmC,CACvD,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;GAEG;AACH,wBAAsB,8BAA8B,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAexF;AAED;;GAEG;AACH,wBAAsB,kCAAkC,CACtD,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,IAAI,GACd,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;GAEG;AACH,wBAAsB,qCAAqC,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3E;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
"use server";
|
|
2
|
-
import { sha256 } from "@oslojs/crypto/sha2";
|
|
3
|
-
import { encodeHexLowerCase } from "@oslojs/encoding";
|
|
4
|
-
import { addHours } from "date-fns";
|
|
5
|
-
import { eq } from "drizzle-orm";
|
|
6
|
-
import { cookies } from "next/headers";
|
|
7
|
-
import { db } from "../../server/database/inject";
|
|
8
|
-
import { passwordResetSessionTable, userTable, } from "../../server/database/schema";
|
|
9
|
-
import { sendResetPassword } from "../../server/emails/index";
|
|
10
|
-
import { augmentPasswordResetSession } from "./augment";
|
|
11
|
-
import { performFullUserAugmentation } from "./logic";
|
|
12
|
-
import { generateRandomOTP } from "./utils/encode";
|
|
13
|
-
/**
|
|
14
|
-
* Creates a new password reset session.
|
|
15
|
-
*/
|
|
16
|
-
export async function createPasswordResetSession(token, userId, email) {
|
|
17
|
-
const sessionId = encodeHexLowerCase(sha256(new TextEncoder().encode(token)));
|
|
18
|
-
const [session] = await db
|
|
19
|
-
.insert(passwordResetSessionTable)
|
|
20
|
-
.values({
|
|
21
|
-
id: sessionId,
|
|
22
|
-
email: email,
|
|
23
|
-
code: generateRandomOTP(),
|
|
24
|
-
expiresAt: new Date(addHours(new Date(), 1)),
|
|
25
|
-
userId: userId,
|
|
26
|
-
})
|
|
27
|
-
.returning();
|
|
28
|
-
return session;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Validates the password reset session token and retrieves user data.
|
|
32
|
-
* The user data is augmented by registered modules (e.g. 2FA).
|
|
33
|
-
*/
|
|
34
|
-
export async function validatePasswordResetSessionToken(token) {
|
|
35
|
-
const sessionId = encodeHexLowerCase(sha256(new TextEncoder().encode(token)));
|
|
36
|
-
const [row] = await db
|
|
37
|
-
.select({
|
|
38
|
-
session: passwordResetSessionTable,
|
|
39
|
-
user: userTable,
|
|
40
|
-
})
|
|
41
|
-
.from(passwordResetSessionTable)
|
|
42
|
-
.innerJoin(userTable, eq(passwordResetSessionTable.userId, userTable.id))
|
|
43
|
-
.where(eq(passwordResetSessionTable.id, sessionId));
|
|
44
|
-
if (!row || !row.user) {
|
|
45
|
-
return { session: null, user: null };
|
|
46
|
-
}
|
|
47
|
-
const { session: baseSession, user: baseUser } = row;
|
|
48
|
-
// Check for expiration
|
|
49
|
-
if (new Date() > baseSession.expiresAt) {
|
|
50
|
-
await db
|
|
51
|
-
.delete(passwordResetSessionTable)
|
|
52
|
-
.where(eq(passwordResetSessionTable.id, baseSession.id));
|
|
53
|
-
return { session: null, user: null };
|
|
54
|
-
}
|
|
55
|
-
// STRICTLY remove non-serializable and sensitive fields
|
|
56
|
-
const { password, recovery_code, ...safeUser } = baseUser;
|
|
57
|
-
// AUGMENT (EXTENSIBILITY POINTS)
|
|
58
|
-
const user = await performFullUserAugmentation(safeUser);
|
|
59
|
-
const session = await augmentPasswordResetSession(baseSession);
|
|
60
|
-
return { session, user };
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Marks the password reset session as email verified.
|
|
64
|
-
*/
|
|
65
|
-
export async function setPasswordResetSessionAsEmailVerified(sessionId) {
|
|
66
|
-
await db
|
|
67
|
-
.update(passwordResetSessionTable)
|
|
68
|
-
.set({
|
|
69
|
-
emailVerified: true,
|
|
70
|
-
})
|
|
71
|
-
.where(eq(passwordResetSessionTable.id, sessionId));
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Invalidates all password reset sessions for a user.
|
|
75
|
-
*/
|
|
76
|
-
export async function invalidateUserPasswordResetSessions(userId) {
|
|
77
|
-
await db
|
|
78
|
-
.delete(passwordResetSessionTable)
|
|
79
|
-
.where(eq(passwordResetSessionTable.userId, userId));
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Validates the current password reset session from cookies.
|
|
83
|
-
*/
|
|
84
|
-
export async function getCurrentPasswordResetSession() {
|
|
85
|
-
var _a, _b;
|
|
86
|
-
const cookieStore = await cookies();
|
|
87
|
-
const token = (_b = (_a = cookieStore.get("password_reset_session")) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;
|
|
88
|
-
if (token === null) {
|
|
89
|
-
return { session: null, user: null };
|
|
90
|
-
}
|
|
91
|
-
const result = await validatePasswordResetSessionToken(token);
|
|
92
|
-
if (result.session === null) {
|
|
93
|
-
await deletePasswordResetSessionTokenCookie();
|
|
94
|
-
}
|
|
95
|
-
return result;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Sets the password reset session token cookie.
|
|
99
|
-
*/
|
|
100
|
-
export async function setPasswordResetSessionTokenCookie(token, expiresAt) {
|
|
101
|
-
const cookieStore = await cookies();
|
|
102
|
-
cookieStore.set("password_reset_session", token, {
|
|
103
|
-
expires: expiresAt,
|
|
104
|
-
sameSite: "lax",
|
|
105
|
-
httpOnly: true,
|
|
106
|
-
path: "/",
|
|
107
|
-
secure: process.env.NODE_ENV === "production",
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Deletes the password reset session token cookie.
|
|
112
|
-
*/
|
|
113
|
-
export async function deletePasswordResetSessionTokenCookie() {
|
|
114
|
-
const cookieStore = await cookies();
|
|
115
|
-
cookieStore.delete("password_reset_session");
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Sends a password reset email with the OTP code.
|
|
119
|
-
*/
|
|
120
|
-
export async function sendPasswordResetEmail(email, code) {
|
|
121
|
-
await sendResetPassword(email, code);
|
|
122
|
-
}
|
package/dist/core/auth/rbac.d.ts
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CORE RBAC LOGIC
|
|
3
|
-
* This file handles all database operations for Roles and Permissions.
|
|
4
|
-
*/
|
|
5
|
-
export declare function getRoles(): Promise<{
|
|
6
|
-
id: string;
|
|
7
|
-
name: string;
|
|
8
|
-
description: string | null;
|
|
9
|
-
}[]>;
|
|
10
|
-
export declare function getRoleById(roleId: string): Promise<{
|
|
11
|
-
id: string;
|
|
12
|
-
name: string;
|
|
13
|
-
description: string | null;
|
|
14
|
-
}>;
|
|
15
|
-
export declare function createRole(name: string, description?: string): Promise<{
|
|
16
|
-
id: string;
|
|
17
|
-
name: string;
|
|
18
|
-
description: string | null;
|
|
19
|
-
}[]>;
|
|
20
|
-
export declare function deleteRole(roleId: string): Promise<import("pg").QueryResult<never>>;
|
|
21
|
-
export declare function getPermissions(): Promise<{
|
|
22
|
-
id: string;
|
|
23
|
-
name: string;
|
|
24
|
-
description: string | null;
|
|
25
|
-
}[]>;
|
|
26
|
-
export declare function createPermission(name: string, description?: string): Promise<{
|
|
27
|
-
id: string;
|
|
28
|
-
name: string;
|
|
29
|
-
description: string | null;
|
|
30
|
-
}[]>;
|
|
31
|
-
export declare function deletePermission(permissionId: string): Promise<import("pg").QueryResult<never>>;
|
|
32
|
-
export declare function getRolePermissions(roleId: string): Promise<{
|
|
33
|
-
id: string;
|
|
34
|
-
name: string;
|
|
35
|
-
}[]>;
|
|
36
|
-
export declare function assignPermissionToRole(roleId: string, permissionId: string): Promise<import("pg").QueryResult<never>>;
|
|
37
|
-
export declare function revokePermissionFromRole(roleId: string, permissionId: string): Promise<import("pg").QueryResult<never>>;
|
|
38
|
-
export declare function assignRoleToUser(userId: string, roleId: string): Promise<import("pg").QueryResult<never>>;
|
|
39
|
-
export declare function revokeRoleFromUser(userId: string, roleId: string): Promise<import("pg").QueryResult<never>>;
|
|
40
|
-
export declare function assignPermissionToUser(userId: string, permissionId: string): Promise<import("pg").QueryResult<never>>;
|
|
41
|
-
export declare function revokePermissionFromUser(userId: string, permissionId: string): Promise<import("pg").QueryResult<never>>;
|
|
42
|
-
export declare function getUserRbacData(userId: string): Promise<{
|
|
43
|
-
roles: {
|
|
44
|
-
id: string;
|
|
45
|
-
name: string;
|
|
46
|
-
}[];
|
|
47
|
-
directPermissions: {
|
|
48
|
-
id: string;
|
|
49
|
-
name: string;
|
|
50
|
-
}[];
|
|
51
|
-
effectivePermissions: {
|
|
52
|
-
id: string;
|
|
53
|
-
name: string;
|
|
54
|
-
}[];
|
|
55
|
-
}>;
|
|
56
|
-
//# sourceMappingURL=rbac.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rbac.d.ts","sourceRoot":"","sources":["../../../src/core/auth/rbac.ts"],"names":[],"mappings":"AAkBA;;;GAGG;AAIH,wBAAsB,QAAQ;;;;KAE7B;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM;;;;GAM/C;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;;;;KAElE;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,4CAE9C;AAID,wBAAsB,cAAc;;;;KAKnC;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;;;;KAKxE;AAED,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM,4CAI1D;AAID,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM;;;KAYtD;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,4CAMrB;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,4CAUrB;AAID,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,4CAKpE;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,4CAStE;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,4CAMrB;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,4CAUrB;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;YAwCP,MAAM;cAAQ,MAAM;;GAUhE"}
|