@arch-cadre/core 0.0.41 → 0.0.42
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.mjs +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.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.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.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.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.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.mts +55 -0
- package/dist/core/auth/types.d.mts.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.d.ts → encryption.d.mts} +8 -5
- 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.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.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.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.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.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.mjs +2 -0
- package/dist/core/filesystem/index.mjs.map +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.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.mts +22 -0
- package/dist/core/filesystem/types.d.mts.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.mjs +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.mts +21 -0
- package/dist/core/notifications/types.d.mts.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.mts +13 -0
- package/dist/core/types.d.mts.map +1 -0
- package/dist/index.d.mts +8 -0
- package/dist/index.mjs +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.d.ts → password.d.mts} +7 -4
- 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.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.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.d.mts +2962 -0
- package/dist/server/database/{schema.d.ts.map → schema.d.mts.map} +1 -1
- package/dist/server/database/schema.mjs +2 -0
- package/dist/server/database/schema.mjs.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.d.mts +26 -0
- package/dist/server.mjs +1 -0
- package/package.json +4 -5
- 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 -53
- 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 -115
- 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 -2
- 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 -264
- 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 -132
- 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 -151
- 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 -167
- 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 -2
- 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 -24
- package/dist/core/auth/utils/encryption.d.ts.map +0 -1
- package/dist/core/auth/utils/encryption.js +0 -68
- 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 -44
- package/dist/core/bootstrap.d.ts +0 -2
- package/dist/core/bootstrap.d.ts.map +0 -1
- package/dist/core/bootstrap.js +0 -54
- package/dist/core/config.d.ts +0 -9
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js +0 -6
- 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 -101
- 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 -54
- 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 -27
- 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 -49
- 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 -54
- 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 -2
- 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 -49
- 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 -19
- 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 -35
- 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 -2
- package/dist/core/setup.d.ts +0 -6
- package/dist/core/setup.d.ts.map +0 -1
- package/dist/core/setup.js +0 -28
- package/dist/core/types.d.ts +0 -10
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -2
- package/dist/index.d.ts +0 -8
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -32
- 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 -24
- package/dist/server/auth/password.d.ts.map +0 -1
- package/dist/server/auth/password.js +0 -38
- 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 -17
- 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 -237
- 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 -33
- package/dist/server/database/schema.d.ts +0 -2953
- package/dist/server/database/schema.js +0 -195
- 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 -2
- 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 -73
- package/dist/server.d.ts +0 -25
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -48
package/dist/index.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from "./core/auth/types";
|
|
2
|
-
export * from "./core/auth/validation";
|
|
3
|
-
export * from "./core/event-bus";
|
|
4
|
-
export * from "./core/notifications/service";
|
|
5
|
-
export * from "./core/notifications/types";
|
|
6
|
-
export * from "./core/types";
|
|
7
|
-
export * from "./server/database/schema";
|
|
8
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,kBAAkB,CAAC;AAMjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAE7B,cAAc,0BAA0B,CAAC"}
|
package/dist/index.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// export { ExtensionPoint } from "./client/extension-point";
|
|
3
|
-
// export { ExtensionPointClient } from "./client/extension-point-client";
|
|
4
|
-
// export { WidgetArea } from "./client/widget-area";
|
|
5
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
-
}
|
|
11
|
-
Object.defineProperty(o, k2, desc);
|
|
12
|
-
}) : (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
o[k2] = m[k];
|
|
15
|
-
}));
|
|
16
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
-
};
|
|
19
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
// Common Types & Constants
|
|
21
|
-
__exportStar(require("./core/auth/types"), exports);
|
|
22
|
-
__exportStar(require("./core/auth/validation"), exports);
|
|
23
|
-
// Shared Services (Singletons / Handlers)
|
|
24
|
-
__exportStar(require("./core/event-bus"), exports);
|
|
25
|
-
// Shared Constants & Models (Safe for Browser)
|
|
26
|
-
// export * from "./core/modules/ui";
|
|
27
|
-
// export * from "./core/modules/types";
|
|
28
|
-
// Client Hooks & Providers
|
|
29
|
-
__exportStar(require("./core/notifications/service"), exports);
|
|
30
|
-
__exportStar(require("./core/notifications/types"), exports);
|
|
31
|
-
__exportStar(require("./core/types"), exports);
|
|
32
|
-
__exportStar(require("./server/database/schema"), exports);
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Validates the email format and length.
|
|
3
|
-
*/
|
|
4
|
-
export declare function verifyEmailInput(email: string): boolean;
|
|
5
|
-
/**
|
|
6
|
-
* Checks if an email address is already in use.
|
|
7
|
-
* @returns True if the email is available, false otherwise.
|
|
8
|
-
*/
|
|
9
|
-
export declare function checkEmailAvailability(email: string): Promise<boolean>;
|
|
10
|
-
//# sourceMappingURL=email.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/server/auth/email.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO5E"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.verifyEmailInput = verifyEmailInput;
|
|
4
|
-
exports.checkEmailAvailability = checkEmailAvailability;
|
|
5
|
-
const drizzle_orm_1 = require("drizzle-orm");
|
|
6
|
-
const inject_1 = require("../database/inject");
|
|
7
|
-
const schema_1 = require("../database/schema");
|
|
8
|
-
/**
|
|
9
|
-
* Validates the email format and length.
|
|
10
|
-
*/
|
|
11
|
-
function verifyEmailInput(email) {
|
|
12
|
-
return /^.+@.+\..+$/.test(email) && email.length < 256 && email.length > 0;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Checks if an email address is already in use.
|
|
16
|
-
* @returns True if the email is available, false otherwise.
|
|
17
|
-
*/
|
|
18
|
-
async function checkEmailAvailability(email) {
|
|
19
|
-
const [entries] = await inject_1.db
|
|
20
|
-
.select({ count: (0, drizzle_orm_1.count)() })
|
|
21
|
-
.from(schema_1.userTable)
|
|
22
|
-
.where((0, drizzle_orm_1.eq)(schema_1.userTable.email, email));
|
|
23
|
-
return entries.count === 0;
|
|
24
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../../src/server/auth/password.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIpE;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAElB"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
"use server";
|
|
3
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
-
};
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.hashPassword = hashPassword;
|
|
8
|
-
exports.verifyPasswordHash = verifyPasswordHash;
|
|
9
|
-
exports.verifyPasswordStrength = verifyPasswordStrength;
|
|
10
|
-
const bcryptjs_1 = __importDefault(require("bcryptjs"));
|
|
11
|
-
/**
|
|
12
|
-
* Hashes the password using bcrypt.
|
|
13
|
-
* @param password Password to be hashed.
|
|
14
|
-
* @returns Returns the hashed password.
|
|
15
|
-
*/
|
|
16
|
-
async function hashPassword(password) {
|
|
17
|
-
const saltRounds = 10;
|
|
18
|
-
return await bcryptjs_1.default.hash(password, saltRounds);
|
|
19
|
-
// return password;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Verifies the password hash.
|
|
23
|
-
* @param hash bcrypt hash.
|
|
24
|
-
* @param password Password for comparison.
|
|
25
|
-
* @returns Returns true if the password is correct, false otherwise.
|
|
26
|
-
*/
|
|
27
|
-
async function verifyPasswordHash(hash, password) {
|
|
28
|
-
return await bcryptjs_1.default.compare(password, hash);
|
|
29
|
-
// return password === hash;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Validates password strength.
|
|
33
|
-
* @param password Password to validate.
|
|
34
|
-
* @returns Returns true if the password meets complexity requirements.
|
|
35
|
-
*/
|
|
36
|
-
async function verifyPasswordStrength(password) {
|
|
37
|
-
return password.length >= 8 && password.length <= 255;
|
|
38
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export * from "../../core/auth/types";
|
|
2
|
-
import type { UserSession as CoreUserSession, FullUser } from "../../core/auth/types";
|
|
3
|
-
export interface User2FAStatus {
|
|
4
|
-
registeredTOTP: boolean;
|
|
5
|
-
registeredPasskey: boolean;
|
|
6
|
-
registered2FA: boolean;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* @deprecated Use FullUser from core/auth/types
|
|
10
|
-
*/
|
|
11
|
-
export type UserWith2FA = FullUser;
|
|
12
|
-
export type { CoreUserSession as UserSession };
|
|
13
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/auth/types.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AAEtC,OAAO,KAAK,EACV,WAAW,IAAI,eAAe,EAC9B,QAAQ,EACT,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;AAEnC,YAAY,EAAE,eAAe,IAAI,WAAW,EAAE,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("../../core/auth/types"), exports);
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import type { User } from "../../core/auth/types";
|
|
2
|
-
/**
|
|
3
|
-
* Validates the username input.
|
|
4
|
-
*/
|
|
5
|
-
export declare function verifyUsernameInput(username: string): Promise<boolean>;
|
|
6
|
-
/**
|
|
7
|
-
* Creates a new user with an initial recovery code and default 'user' role.
|
|
8
|
-
*/
|
|
9
|
-
export declare function createUser(email: string, username: string, password: string): Promise<User>;
|
|
10
|
-
/**
|
|
11
|
-
* Creates a new user from an OAuth provider.
|
|
12
|
-
*/
|
|
13
|
-
export declare function createOAuthUser(email: string, name: string, image?: string): Promise<User>;
|
|
14
|
-
/**
|
|
15
|
-
* Returns a user by ID.
|
|
16
|
-
*/
|
|
17
|
-
export declare function getUserById(userId: string): Promise<User | null>;
|
|
18
|
-
/**
|
|
19
|
-
* Decrypts and returns the user's recovery code.
|
|
20
|
-
*/
|
|
21
|
-
export declare function getUserRecoverCode(userId: string): Promise<string>;
|
|
22
|
-
/**
|
|
23
|
-
* Generates and sets a new recovery code for the user.
|
|
24
|
-
*/
|
|
25
|
-
export declare function resetUserRecoveryCode(userId: string): Promise<string>;
|
|
26
|
-
/**
|
|
27
|
-
* Updates the user's password.
|
|
28
|
-
*/
|
|
29
|
-
export declare function updateUserPassword(userId: string, password: string): Promise<void>;
|
|
30
|
-
/**
|
|
31
|
-
* Updates the user's name.
|
|
32
|
-
*/
|
|
33
|
-
export declare function updateUserName(userId: string, name: string): Promise<void>;
|
|
34
|
-
/**
|
|
35
|
-
* Updates the user's image.
|
|
36
|
-
*/
|
|
37
|
-
export declare function updateUserAwatar(userId: string, image: string): Promise<void>;
|
|
38
|
-
/**
|
|
39
|
-
* Updates the user's email and marks it as verified.
|
|
40
|
-
*/
|
|
41
|
-
export declare function updateUserEmailAndSetEmailAsVerified(userId: string, email: string): Promise<void>;
|
|
42
|
-
/**
|
|
43
|
-
* Sets the user as email verified if the provided email matches.
|
|
44
|
-
*/
|
|
45
|
-
export declare function setUserAsEmailVerifiedIfEmailMatches(userId: string, email: string): Promise<boolean>;
|
|
46
|
-
/**
|
|
47
|
-
* Returns the user's password hash.
|
|
48
|
-
*/
|
|
49
|
-
export declare function getUserPasswordHash(userId: string): Promise<string | null>;
|
|
50
|
-
/**
|
|
51
|
-
* Returns a user by email.
|
|
52
|
-
*/
|
|
53
|
-
export declare function getUserFromEmail(email: string): Promise<User | null>;
|
|
54
|
-
//# sourceMappingURL=user.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/server/auth/user.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAWlD;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI5E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAStE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAaxE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB3E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAOf;AACD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,oCAAoC,CACxD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;GAEG;AACH,wBAAsB,oCAAoC,CACxD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAaxB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAS1E"}
|
package/dist/server/auth/user.js
DELETED
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
"use server";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.verifyUsernameInput = verifyUsernameInput;
|
|
5
|
-
exports.createUser = createUser;
|
|
6
|
-
exports.createOAuthUser = createOAuthUser;
|
|
7
|
-
exports.getUserById = getUserById;
|
|
8
|
-
exports.getUserRecoverCode = getUserRecoverCode;
|
|
9
|
-
exports.resetUserRecoveryCode = resetUserRecoveryCode;
|
|
10
|
-
exports.updateUserPassword = updateUserPassword;
|
|
11
|
-
exports.updateUserName = updateUserName;
|
|
12
|
-
exports.updateUserAwatar = updateUserAwatar;
|
|
13
|
-
exports.updateUserEmailAndSetEmailAsVerified = updateUserEmailAndSetEmailAsVerified;
|
|
14
|
-
exports.setUserAsEmailVerifiedIfEmailMatches = setUserAsEmailVerifiedIfEmailMatches;
|
|
15
|
-
exports.getUserPasswordHash = getUserPasswordHash;
|
|
16
|
-
exports.getUserFromEmail = getUserFromEmail;
|
|
17
|
-
const drizzle_orm_1 = require("drizzle-orm");
|
|
18
|
-
const encode_1 = require("../../core/auth/utils/encode");
|
|
19
|
-
const encryption_1 = require("../../core/auth/utils/encryption");
|
|
20
|
-
const inject_1 = require("../database/inject");
|
|
21
|
-
const schema_1 = require("../database/schema");
|
|
22
|
-
const index_1 = require("../emails/index");
|
|
23
|
-
const password_1 = require("./password");
|
|
24
|
-
/**
|
|
25
|
-
* Validates the username input.
|
|
26
|
-
*/
|
|
27
|
-
async function verifyUsernameInput(username) {
|
|
28
|
-
return (username.length > 3 && username.length < 32 && username.trim() === username);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Creates a new user with an initial recovery code and default 'user' role.
|
|
32
|
-
*/
|
|
33
|
-
async function createUser(email, username, password) {
|
|
34
|
-
const passwordHash = await (0, password_1.hashPassword)(password);
|
|
35
|
-
const recoveryCode = (0, encode_1.generateRandomRecoveryCode)();
|
|
36
|
-
const encryptedRecoveryCode = (0, encryption_1.encryptString)(recoveryCode);
|
|
37
|
-
return await inject_1.db.transaction(async (tx) => {
|
|
38
|
-
const [row] = await tx
|
|
39
|
-
.insert(schema_1.userTable)
|
|
40
|
-
.values({
|
|
41
|
-
email: email,
|
|
42
|
-
name: username,
|
|
43
|
-
password: passwordHash,
|
|
44
|
-
recovery_code: Buffer.from(encryptedRecoveryCode),
|
|
45
|
-
})
|
|
46
|
-
.returning();
|
|
47
|
-
if (!row) {
|
|
48
|
-
throw new Error("Failed to create user");
|
|
49
|
-
}
|
|
50
|
-
// Assign default 'user' role
|
|
51
|
-
let [role] = await tx
|
|
52
|
-
.select()
|
|
53
|
-
.from(schema_1.rolesTable)
|
|
54
|
-
.where((0, drizzle_orm_1.eq)(schema_1.rolesTable.name, "user"));
|
|
55
|
-
if (!role) {
|
|
56
|
-
[role] = await tx
|
|
57
|
-
.insert(schema_1.rolesTable)
|
|
58
|
-
.values({ name: "user", description: "Default user role" })
|
|
59
|
-
.returning();
|
|
60
|
-
}
|
|
61
|
-
await tx.insert(schema_1.usersToRolesTable).values({
|
|
62
|
-
userId: row.id,
|
|
63
|
-
roleId: role.id,
|
|
64
|
-
});
|
|
65
|
-
await (0, index_1.sendRecoveryCode)(row.email, recoveryCode);
|
|
66
|
-
return row;
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Creates a new user from an OAuth provider.
|
|
71
|
-
*/
|
|
72
|
-
async function createOAuthUser(email, name, image) {
|
|
73
|
-
const recoveryCode = (0, encode_1.generateRandomRecoveryCode)();
|
|
74
|
-
const encryptedRecoveryCode = (0, encryption_1.encryptString)(recoveryCode);
|
|
75
|
-
return await inject_1.db.transaction(async (tx) => {
|
|
76
|
-
const [row] = await tx
|
|
77
|
-
.insert(schema_1.userTable)
|
|
78
|
-
.values({
|
|
79
|
-
email: email,
|
|
80
|
-
name: name,
|
|
81
|
-
image: image,
|
|
82
|
-
emailVerifiedAt: new Date(),
|
|
83
|
-
recovery_code: Buffer.from(encryptedRecoveryCode),
|
|
84
|
-
})
|
|
85
|
-
.returning();
|
|
86
|
-
// Assign default 'user' role
|
|
87
|
-
let [role] = await tx
|
|
88
|
-
.select()
|
|
89
|
-
.from(schema_1.rolesTable)
|
|
90
|
-
.where((0, drizzle_orm_1.eq)(schema_1.rolesTable.name, "user"));
|
|
91
|
-
if (!role) {
|
|
92
|
-
[role] = await tx
|
|
93
|
-
.insert(schema_1.rolesTable)
|
|
94
|
-
.values({ name: "user", description: "Default user role" })
|
|
95
|
-
.returning();
|
|
96
|
-
}
|
|
97
|
-
await tx.insert(schema_1.usersToRolesTable).values({
|
|
98
|
-
userId: row.id,
|
|
99
|
-
roleId: role.id,
|
|
100
|
-
});
|
|
101
|
-
return row;
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Returns a user by ID.
|
|
106
|
-
*/
|
|
107
|
-
async function getUserById(userId) {
|
|
108
|
-
const [user] = await inject_1.db
|
|
109
|
-
.select()
|
|
110
|
-
.from(schema_1.userTable)
|
|
111
|
-
.where((0, drizzle_orm_1.eq)(schema_1.userTable.id, userId));
|
|
112
|
-
if (!user)
|
|
113
|
-
return null;
|
|
114
|
-
const { password, recovery_code, ...safeUser } = user;
|
|
115
|
-
return safeUser;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Decrypts and returns the user's recovery code.
|
|
119
|
-
*/
|
|
120
|
-
async function getUserRecoverCode(userId) {
|
|
121
|
-
const [user] = await inject_1.db
|
|
122
|
-
.select({
|
|
123
|
-
recovery_code: schema_1.userTable.recovery_code,
|
|
124
|
-
})
|
|
125
|
-
.from(schema_1.userTable)
|
|
126
|
-
.where((0, drizzle_orm_1.eq)(schema_1.userTable.id, userId));
|
|
127
|
-
if (!user || !user.recovery_code) {
|
|
128
|
-
throw new Error("Recovery code not found for user");
|
|
129
|
-
}
|
|
130
|
-
return (0, encryption_1.decryptToString)(user.recovery_code);
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Generates and sets a new recovery code for the user.
|
|
134
|
-
*/
|
|
135
|
-
async function resetUserRecoveryCode(userId) {
|
|
136
|
-
const recoveryCode = (0, encode_1.generateRandomRecoveryCode)();
|
|
137
|
-
const encrypted = (0, encryption_1.encryptString)(recoveryCode);
|
|
138
|
-
const [currentUser] = await inject_1.db
|
|
139
|
-
.update(schema_1.userTable)
|
|
140
|
-
.set({
|
|
141
|
-
recovery_code: Buffer.from(encrypted),
|
|
142
|
-
})
|
|
143
|
-
.where((0, drizzle_orm_1.eq)(schema_1.userTable.id, userId))
|
|
144
|
-
.returning();
|
|
145
|
-
if (!currentUser) {
|
|
146
|
-
throw new Error("User not found");
|
|
147
|
-
}
|
|
148
|
-
await (0, index_1.sendRecoveryCode)(currentUser.email, recoveryCode);
|
|
149
|
-
return recoveryCode;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Updates the user's password.
|
|
153
|
-
*/
|
|
154
|
-
async function updateUserPassword(userId, password) {
|
|
155
|
-
const passwordHash = await (0, password_1.hashPassword)(password);
|
|
156
|
-
await inject_1.db
|
|
157
|
-
.update(schema_1.userTable)
|
|
158
|
-
.set({
|
|
159
|
-
password: passwordHash,
|
|
160
|
-
})
|
|
161
|
-
.where((0, drizzle_orm_1.eq)(schema_1.userTable.id, userId));
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Updates the user's name.
|
|
165
|
-
*/
|
|
166
|
-
async function updateUserName(userId, name) {
|
|
167
|
-
await inject_1.db
|
|
168
|
-
.update(schema_1.userTable)
|
|
169
|
-
.set({
|
|
170
|
-
name: name,
|
|
171
|
-
})
|
|
172
|
-
.where((0, drizzle_orm_1.eq)(schema_1.userTable.id, userId));
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Updates the user's image.
|
|
176
|
-
*/
|
|
177
|
-
async function updateUserAwatar(userId, image) {
|
|
178
|
-
await inject_1.db
|
|
179
|
-
.update(schema_1.userTable)
|
|
180
|
-
.set({
|
|
181
|
-
image,
|
|
182
|
-
})
|
|
183
|
-
.where((0, drizzle_orm_1.eq)(schema_1.userTable.id, userId));
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Updates the user's email and marks it as verified.
|
|
187
|
-
*/
|
|
188
|
-
async function updateUserEmailAndSetEmailAsVerified(userId, email) {
|
|
189
|
-
await inject_1.db
|
|
190
|
-
.update(schema_1.userTable)
|
|
191
|
-
.set({
|
|
192
|
-
email: email,
|
|
193
|
-
emailVerifiedAt: new Date(),
|
|
194
|
-
})
|
|
195
|
-
.where((0, drizzle_orm_1.eq)(schema_1.userTable.id, userId));
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Sets the user as email verified if the provided email matches.
|
|
199
|
-
*/
|
|
200
|
-
async function setUserAsEmailVerifiedIfEmailMatches(userId, email) {
|
|
201
|
-
const result = await inject_1.db
|
|
202
|
-
.update(schema_1.userTable)
|
|
203
|
-
.set({
|
|
204
|
-
emailVerifiedAt: new Date(),
|
|
205
|
-
})
|
|
206
|
-
.where((0, drizzle_orm_1.and)((0, drizzle_orm_1.eq)(schema_1.userTable.id, userId), (0, drizzle_orm_1.eq)(schema_1.userTable.email, email)))
|
|
207
|
-
.returning({ id: schema_1.userTable.id });
|
|
208
|
-
return result.length > 0;
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Returns the user's password hash.
|
|
212
|
-
*/
|
|
213
|
-
async function getUserPasswordHash(userId) {
|
|
214
|
-
const [user] = await inject_1.db
|
|
215
|
-
.select({
|
|
216
|
-
password: schema_1.userTable.password,
|
|
217
|
-
})
|
|
218
|
-
.from(schema_1.userTable)
|
|
219
|
-
.where((0, drizzle_orm_1.eq)(schema_1.userTable.id, userId));
|
|
220
|
-
if (!user) {
|
|
221
|
-
throw new Error("User not found");
|
|
222
|
-
}
|
|
223
|
-
return user.password;
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* Returns a user by email.
|
|
227
|
-
*/
|
|
228
|
-
async function getUserFromEmail(email) {
|
|
229
|
-
const [user] = await inject_1.db
|
|
230
|
-
.select()
|
|
231
|
-
.from(schema_1.userTable)
|
|
232
|
-
.where((0, drizzle_orm_1.eq)(schema_1.userTable.email, email));
|
|
233
|
-
if (!user)
|
|
234
|
-
return null;
|
|
235
|
-
const { password, recovery_code, ...safeUser } = user;
|
|
236
|
-
return safeUser;
|
|
237
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { NodePgDatabase } from "drizzle-orm/node-postgres";
|
|
2
|
-
import type * as schema from "./schema";
|
|
3
|
-
export type KryoDatabase = NodePgDatabase<typeof schema>;
|
|
4
|
-
export declare function injectDb(db: KryoDatabase): void;
|
|
5
|
-
/**
|
|
6
|
-
* Shared 'db' proxy.
|
|
7
|
-
* Resolves to globalThis.__KRYO_DB__ on every property access.
|
|
8
|
-
* Safe to import statically at top-level.
|
|
9
|
-
*/
|
|
10
|
-
export declare const db: KryoDatabase;
|
|
11
|
-
//# sourceMappingURL=inject.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../../src/server/database/inject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,KAAK,MAAM,MAAM,UAAU,CAAC;AAExC,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC;AAKzD,wBAAgB,QAAQ,CAAC,EAAE,EAAE,YAAY,QAIxC;AAED;;;;GAIG;AACH,eAAO,MAAM,EAAE,cAmBb,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.db = void 0;
|
|
4
|
-
exports.injectDb = injectDb;
|
|
5
|
-
// Use globalThis to persist the DB across multiple bundles/instances
|
|
6
|
-
const globalForDb = globalThis;
|
|
7
|
-
function injectDb(db) {
|
|
8
|
-
if (globalForDb.__KRYO_DB__)
|
|
9
|
-
return;
|
|
10
|
-
console.log("[Kryo:Core] >>> DATABASE INJECTED <<<");
|
|
11
|
-
globalForDb.__KRYO_DB__ = db;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Shared 'db' proxy.
|
|
15
|
-
* Resolves to globalThis.__KRYO_DB__ on every property access.
|
|
16
|
-
* Safe to import statically at top-level.
|
|
17
|
-
*/
|
|
18
|
-
exports.db = new Proxy({}, {
|
|
19
|
-
get(_, prop) {
|
|
20
|
-
var _a;
|
|
21
|
-
if (prop === "then")
|
|
22
|
-
return undefined;
|
|
23
|
-
// Internal Drizzle/Node/Debug checks
|
|
24
|
-
if (typeof prop === "symbol" || prop === "inspect" || prop === "toString") {
|
|
25
|
-
return (_a = globalForDb.__KRYO_DB__) === null || _a === void 0 ? void 0 : _a[prop];
|
|
26
|
-
}
|
|
27
|
-
const database = globalForDb.__KRYO_DB__;
|
|
28
|
-
if (!database) {
|
|
29
|
-
throw new Error(`[Kryo:Core] Database access error: tried to use "db.${String(prop)}" but database is not injected yet. Ensure you call "ensureSystemInitialized()" before using the database.`);
|
|
30
|
-
}
|
|
31
|
-
return database[prop];
|
|
32
|
-
},
|
|
33
|
-
});
|