@sonicjs-cms/core 2.12.0 → 2.12.1
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/{chunk-NDFHQOPP.js → chunk-3V2CQFIR.js} +8 -8
- package/dist/{chunk-NDFHQOPP.js.map → chunk-3V2CQFIR.js.map} +1 -1
- package/dist/{chunk-6R6LAUR7.js → chunk-673VROB3.js} +3 -3
- package/dist/{chunk-6R6LAUR7.js.map → chunk-673VROB3.js.map} +1 -1
- package/dist/{chunk-U3ZMGBVC.js → chunk-6C6W54QP.js} +10 -3
- package/dist/chunk-6C6W54QP.js.map +1 -0
- package/dist/{chunk-ZV6ZCJ74.cjs → chunk-DHTCZZUB.cjs} +97 -97
- package/dist/{chunk-ZV6ZCJ74.cjs.map → chunk-DHTCZZUB.cjs.map} +1 -1
- package/dist/{chunk-VHNTCB2X.cjs → chunk-HBUFGLEX.cjs} +4 -4
- package/dist/{chunk-VHNTCB2X.cjs.map → chunk-HBUFGLEX.cjs.map} +1 -1
- package/dist/{chunk-RXNLGINR.cjs → chunk-IKBAY2M2.cjs} +3 -3
- package/dist/{chunk-RXNLGINR.cjs.map → chunk-IKBAY2M2.cjs.map} +1 -1
- package/dist/{chunk-HXIYYE57.js → chunk-UFWE3MEJ.js} +3 -3
- package/dist/{chunk-HXIYYE57.js.map → chunk-UFWE3MEJ.js.map} +1 -1
- package/dist/{chunk-AG3SIPP7.cjs → chunk-XK3TKOLQ.cjs} +10 -3
- package/dist/chunk-XK3TKOLQ.cjs.map +1 -0
- package/dist/index.cjs +97 -97
- package/dist/index.js +7 -7
- package/dist/middleware.cjs +28 -28
- package/dist/middleware.js +2 -2
- package/dist/migrations-AH2XIFSA.js +4 -0
- package/dist/{migrations-USSEHJC7.js.map → migrations-AH2XIFSA.js.map} +1 -1
- package/dist/migrations-MIZFGFNS.cjs +13 -0
- package/dist/{migrations-ZE6IZNLB.cjs.map → migrations-MIZFGFNS.cjs.map} +1 -1
- package/dist/routes.cjs +27 -27
- package/dist/routes.js +4 -4
- package/dist/services.cjs +2 -2
- package/dist/services.js +1 -1
- package/dist/utils.cjs +11 -11
- package/dist/utils.js +1 -1
- package/migrations/032_user_profiles.sql +1 -0
- package/migrations/035_user_profiles_data_column.sql +17 -0
- package/package.json +1 -1
- package/dist/chunk-AG3SIPP7.cjs.map +0 -1
- package/dist/chunk-U3ZMGBVC.js.map +0 -1
- package/dist/migrations-USSEHJC7.js +0 -4
- package/dist/migrations-ZE6IZNLB.cjs +0 -13
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkNZWFCUDA_cjs = require('./chunk-NZWFCUDA.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkHBUFGLEX_cjs = require('./chunk-HBUFGLEX.cjs');
|
|
5
5
|
var chunkI6FFGQIT_cjs = require('./chunk-I6FFGQIT.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunkXK3TKOLQ_cjs = require('./chunk-XK3TKOLQ.cjs');
|
|
7
7
|
var chunkH4NHRZ6Y_cjs = require('./chunk-H4NHRZ6Y.cjs');
|
|
8
8
|
var chunk6FHNRRJ3_cjs = require('./chunk-6FHNRRJ3.cjs');
|
|
9
|
-
var
|
|
9
|
+
var chunkIKBAY2M2_cjs = require('./chunk-IKBAY2M2.cjs');
|
|
10
10
|
var chunkRCQ2HIQD_cjs = require('./chunk-RCQ2HIQD.cjs');
|
|
11
11
|
var chunkMNWKYY5E_cjs = require('./chunk-MNWKYY5E.cjs');
|
|
12
12
|
var hono = require('hono');
|
|
@@ -188,7 +188,7 @@ apiContentCrudRoutes.get("/:id", async (c) => {
|
|
|
188
188
|
}, 500);
|
|
189
189
|
}
|
|
190
190
|
});
|
|
191
|
-
apiContentCrudRoutes.post("/",
|
|
191
|
+
apiContentCrudRoutes.post("/", chunkHBUFGLEX_cjs.requireAuth(), chunkHBUFGLEX_cjs.requireRole(["admin", "editor", "author"]), async (c) => {
|
|
192
192
|
try {
|
|
193
193
|
const db = c.env.DB;
|
|
194
194
|
const user = c.get("user");
|
|
@@ -254,7 +254,7 @@ apiContentCrudRoutes.post("/", chunkVHNTCB2X_cjs.requireAuth(), chunkVHNTCB2X_cj
|
|
|
254
254
|
}, 500);
|
|
255
255
|
}
|
|
256
256
|
});
|
|
257
|
-
apiContentCrudRoutes.put("/:id",
|
|
257
|
+
apiContentCrudRoutes.put("/:id", chunkHBUFGLEX_cjs.requireAuth(), chunkHBUFGLEX_cjs.requireRole(["admin", "editor", "author"]), async (c) => {
|
|
258
258
|
try {
|
|
259
259
|
const id = c.req.param("id");
|
|
260
260
|
const db = c.env.DB;
|
|
@@ -318,7 +318,7 @@ apiContentCrudRoutes.put("/:id", chunkVHNTCB2X_cjs.requireAuth(), chunkVHNTCB2X_
|
|
|
318
318
|
}, 500);
|
|
319
319
|
}
|
|
320
320
|
});
|
|
321
|
-
apiContentCrudRoutes.delete("/:id",
|
|
321
|
+
apiContentCrudRoutes.delete("/:id", chunkHBUFGLEX_cjs.requireAuth(), chunkHBUFGLEX_cjs.requireRole(["admin", "editor", "author"]), async (c) => {
|
|
322
322
|
try {
|
|
323
323
|
const id = c.req.param("id");
|
|
324
324
|
const db = c.env.DB;
|
|
@@ -354,7 +354,7 @@ apiRoutes.use("*", async (c, next) => {
|
|
|
354
354
|
c.header("X-Response-Time", `${totalTime}ms`);
|
|
355
355
|
});
|
|
356
356
|
apiRoutes.use("*", async (c, next) => {
|
|
357
|
-
const cacheEnabled = await
|
|
357
|
+
const cacheEnabled = await chunkHBUFGLEX_cjs.isPluginActive(c.env.DB, "core-cache");
|
|
358
358
|
c.set("cacheEnabled", cacheEnabled);
|
|
359
359
|
await next();
|
|
360
360
|
});
|
|
@@ -845,7 +845,7 @@ apiRoutes.get("/collections", async (c) => {
|
|
|
845
845
|
return c.json({ error: "Failed to fetch collections" }, 500);
|
|
846
846
|
}
|
|
847
847
|
});
|
|
848
|
-
apiRoutes.get("/content",
|
|
848
|
+
apiRoutes.get("/content", chunkHBUFGLEX_cjs.optionalAuth(), async (c) => {
|
|
849
849
|
const executionStart = Date.now();
|
|
850
850
|
try {
|
|
851
851
|
const db = c.env.DB;
|
|
@@ -868,13 +868,13 @@ apiRoutes.get("/content", chunkVHNTCB2X_cjs.optionalAuth(), async (c) => {
|
|
|
868
868
|
});
|
|
869
869
|
}
|
|
870
870
|
}
|
|
871
|
-
const filter =
|
|
871
|
+
const filter = chunkIKBAY2M2_cjs.QueryFilterBuilder.parseFromQuery(queryParams);
|
|
872
872
|
const normalizedFilter = normalizePublicContentFilter(filter, c.get("user")?.role);
|
|
873
873
|
if (!normalizedFilter.limit) {
|
|
874
874
|
normalizedFilter.limit = 50;
|
|
875
875
|
}
|
|
876
876
|
normalizedFilter.limit = Math.min(normalizedFilter.limit, 1e3);
|
|
877
|
-
const builder3 = new
|
|
877
|
+
const builder3 = new chunkIKBAY2M2_cjs.QueryFilterBuilder();
|
|
878
878
|
const queryResult = builder3.build("content", normalizedFilter);
|
|
879
879
|
if (queryResult.errors.length > 0) {
|
|
880
880
|
return c.json({
|
|
@@ -946,7 +946,7 @@ apiRoutes.get("/content", chunkVHNTCB2X_cjs.optionalAuth(), async (c) => {
|
|
|
946
946
|
}, 500);
|
|
947
947
|
}
|
|
948
948
|
});
|
|
949
|
-
apiRoutes.get("/collections/:collection/content",
|
|
949
|
+
apiRoutes.get("/collections/:collection/content", chunkHBUFGLEX_cjs.optionalAuth(), async (c) => {
|
|
950
950
|
const executionStart = Date.now();
|
|
951
951
|
try {
|
|
952
952
|
const collection = c.req.param("collection");
|
|
@@ -957,7 +957,7 @@ apiRoutes.get("/collections/:collection/content", chunkVHNTCB2X_cjs.optionalAuth
|
|
|
957
957
|
if (!collectionResult) {
|
|
958
958
|
return c.json({ error: "Collection not found" }, 404);
|
|
959
959
|
}
|
|
960
|
-
const filter =
|
|
960
|
+
const filter = chunkIKBAY2M2_cjs.QueryFilterBuilder.parseFromQuery(queryParams);
|
|
961
961
|
const normalizedFilter = normalizePublicContentFilter(filter, c.get("user")?.role);
|
|
962
962
|
if (!normalizedFilter.where) {
|
|
963
963
|
normalizedFilter.where = { and: [] };
|
|
@@ -974,7 +974,7 @@ apiRoutes.get("/collections/:collection/content", chunkVHNTCB2X_cjs.optionalAuth
|
|
|
974
974
|
normalizedFilter.limit = 50;
|
|
975
975
|
}
|
|
976
976
|
normalizedFilter.limit = Math.min(normalizedFilter.limit, 1e3);
|
|
977
|
-
const builder3 = new
|
|
977
|
+
const builder3 = new chunkIKBAY2M2_cjs.QueryFilterBuilder();
|
|
978
978
|
const queryResult = builder3.build("content", normalizedFilter);
|
|
979
979
|
if (queryResult.errors.length > 0) {
|
|
980
980
|
return c.json({
|
|
@@ -1095,7 +1095,7 @@ var fileValidationSchema = zod.z.object({
|
|
|
1095
1095
|
// 50MB max
|
|
1096
1096
|
});
|
|
1097
1097
|
var apiMediaRoutes = new hono.Hono();
|
|
1098
|
-
apiMediaRoutes.use("*",
|
|
1098
|
+
apiMediaRoutes.use("*", chunkHBUFGLEX_cjs.requireAuth());
|
|
1099
1099
|
apiMediaRoutes.post("/upload", async (c) => {
|
|
1100
1100
|
try {
|
|
1101
1101
|
const user = c.get("user");
|
|
@@ -1839,8 +1839,8 @@ apiSystemRoutes.get("/env", (c) => {
|
|
|
1839
1839
|
});
|
|
1840
1840
|
var api_system_default = apiSystemRoutes;
|
|
1841
1841
|
var adminApiRoutes = new hono.Hono();
|
|
1842
|
-
adminApiRoutes.use("*",
|
|
1843
|
-
adminApiRoutes.use("*",
|
|
1842
|
+
adminApiRoutes.use("*", chunkHBUFGLEX_cjs.requireAuth());
|
|
1843
|
+
adminApiRoutes.use("*", chunkHBUFGLEX_cjs.requireRole(["admin", "editor"]));
|
|
1844
1844
|
adminApiRoutes.get("/stats", async (c) => {
|
|
1845
1845
|
try {
|
|
1846
1846
|
const db = c.env.DB;
|
|
@@ -2352,7 +2352,7 @@ adminApiRoutes.delete("/collections/:id", async (c) => {
|
|
|
2352
2352
|
});
|
|
2353
2353
|
adminApiRoutes.get("/migrations/status", async (c) => {
|
|
2354
2354
|
try {
|
|
2355
|
-
const { MigrationService: MigrationService2 } = await import('./migrations-
|
|
2355
|
+
const { MigrationService: MigrationService2 } = await import('./migrations-MIZFGFNS.cjs');
|
|
2356
2356
|
const db = c.env.DB;
|
|
2357
2357
|
const migrationService = new MigrationService2(db);
|
|
2358
2358
|
const status = await migrationService.getMigrationStatus();
|
|
@@ -2377,7 +2377,7 @@ adminApiRoutes.post("/migrations/run", async (c) => {
|
|
|
2377
2377
|
error: "Unauthorized. Admin access required."
|
|
2378
2378
|
}, 403);
|
|
2379
2379
|
}
|
|
2380
|
-
const { MigrationService: MigrationService2 } = await import('./migrations-
|
|
2380
|
+
const { MigrationService: MigrationService2 } = await import('./migrations-MIZFGFNS.cjs');
|
|
2381
2381
|
const db = c.env.DB;
|
|
2382
2382
|
const migrationService = new MigrationService2(db);
|
|
2383
2383
|
const result = await migrationService.runPendingMigrations();
|
|
@@ -2396,7 +2396,7 @@ adminApiRoutes.post("/migrations/run", async (c) => {
|
|
|
2396
2396
|
});
|
|
2397
2397
|
adminApiRoutes.get("/migrations/validate", async (c) => {
|
|
2398
2398
|
try {
|
|
2399
|
-
const { MigrationService: MigrationService2 } = await import('./migrations-
|
|
2399
|
+
const { MigrationService: MigrationService2 } = await import('./migrations-MIZFGFNS.cjs');
|
|
2400
2400
|
const db = c.env.DB;
|
|
2401
2401
|
const migrationService = new MigrationService2(db);
|
|
2402
2402
|
const validation = await migrationService.validateSchema();
|
|
@@ -5146,7 +5146,7 @@ var JWT_SECRET_FALLBACK = "your-super-secret-jwt-key-change-in-production";
|
|
|
5146
5146
|
async function setCsrfCookie(c) {
|
|
5147
5147
|
const secret = c.env?.JWT_SECRET || JWT_SECRET_FALLBACK;
|
|
5148
5148
|
const isDev = c.env?.ENVIRONMENT === "development" || !c.env?.ENVIRONMENT;
|
|
5149
|
-
const csrfToken = await
|
|
5149
|
+
const csrfToken = await chunkHBUFGLEX_cjs.generateCsrfToken(secret);
|
|
5150
5150
|
cookie.setCookie(c, "csrf_token", csrfToken, {
|
|
5151
5151
|
httpOnly: false,
|
|
5152
5152
|
secure: !isDev,
|
|
@@ -5203,7 +5203,7 @@ var loginSchema = zod.z.object({
|
|
|
5203
5203
|
});
|
|
5204
5204
|
authRoutes.post(
|
|
5205
5205
|
"/register",
|
|
5206
|
-
|
|
5206
|
+
chunkHBUFGLEX_cjs.rateLimit({ max: 30, windowMs: 60 * 1e3, keyPrefix: "register" }),
|
|
5207
5207
|
async (c) => {
|
|
5208
5208
|
try {
|
|
5209
5209
|
const db = c.env.DB;
|
|
@@ -5240,7 +5240,7 @@ authRoutes.post(
|
|
|
5240
5240
|
if (existingUser) {
|
|
5241
5241
|
return c.json({ error: "User with this email or username already exists" }, 400);
|
|
5242
5242
|
}
|
|
5243
|
-
const passwordHash = await
|
|
5243
|
+
const passwordHash = await chunkHBUFGLEX_cjs.AuthManager.hashPassword(password);
|
|
5244
5244
|
const userId = crypto.randomUUID();
|
|
5245
5245
|
const now = /* @__PURE__ */ new Date();
|
|
5246
5246
|
await db.prepare(`
|
|
@@ -5274,7 +5274,7 @@ authRoutes.post(
|
|
|
5274
5274
|
await saveCustomData(db, userId, sanitized);
|
|
5275
5275
|
}
|
|
5276
5276
|
}
|
|
5277
|
-
const token = await
|
|
5277
|
+
const token = await chunkHBUFGLEX_cjs.AuthManager.generateToken(userId, normalizedEmail, "viewer", c.env.JWT_SECRET);
|
|
5278
5278
|
cookie.setCookie(c, "auth_token", token, {
|
|
5279
5279
|
httpOnly: true,
|
|
5280
5280
|
secure: true,
|
|
@@ -5308,7 +5308,7 @@ authRoutes.post(
|
|
|
5308
5308
|
);
|
|
5309
5309
|
authRoutes.post(
|
|
5310
5310
|
"/login",
|
|
5311
|
-
|
|
5311
|
+
chunkHBUFGLEX_cjs.rateLimit({ max: 30, windowMs: 60 * 1e3, keyPrefix: "login" }),
|
|
5312
5312
|
async (c) => {
|
|
5313
5313
|
try {
|
|
5314
5314
|
const body = await c.req.json();
|
|
@@ -5331,19 +5331,19 @@ authRoutes.post(
|
|
|
5331
5331
|
if (!user) {
|
|
5332
5332
|
return c.json({ error: "Invalid email or password" }, 401);
|
|
5333
5333
|
}
|
|
5334
|
-
const isValidPassword = await
|
|
5334
|
+
const isValidPassword = await chunkHBUFGLEX_cjs.AuthManager.verifyPassword(password, user.password_hash);
|
|
5335
5335
|
if (!isValidPassword) {
|
|
5336
5336
|
return c.json({ error: "Invalid email or password" }, 401);
|
|
5337
5337
|
}
|
|
5338
|
-
if (
|
|
5338
|
+
if (chunkHBUFGLEX_cjs.AuthManager.isLegacyHash(user.password_hash)) {
|
|
5339
5339
|
try {
|
|
5340
|
-
const newHash = await
|
|
5340
|
+
const newHash = await chunkHBUFGLEX_cjs.AuthManager.hashPassword(password);
|
|
5341
5341
|
await db.prepare("UPDATE users SET password_hash = ?, updated_at = ? WHERE id = ?").bind(newHash, Date.now(), user.id).run();
|
|
5342
5342
|
} catch (rehashError) {
|
|
5343
5343
|
console.error("Password rehash failed (non-fatal):", rehashError);
|
|
5344
5344
|
}
|
|
5345
5345
|
}
|
|
5346
|
-
const token = await
|
|
5346
|
+
const token = await chunkHBUFGLEX_cjs.AuthManager.generateToken(user.id, user.email, user.role, c.env.JWT_SECRET);
|
|
5347
5347
|
cookie.setCookie(c, "auth_token", token, {
|
|
5348
5348
|
httpOnly: true,
|
|
5349
5349
|
secure: true,
|
|
@@ -5396,7 +5396,7 @@ authRoutes.get("/logout", (c) => {
|
|
|
5396
5396
|
clearCsrfCookie(c);
|
|
5397
5397
|
return c.redirect("/auth/login?message=You have been logged out successfully");
|
|
5398
5398
|
});
|
|
5399
|
-
authRoutes.get("/me",
|
|
5399
|
+
authRoutes.get("/me", chunkHBUFGLEX_cjs.requireAuth(), async (c) => {
|
|
5400
5400
|
try {
|
|
5401
5401
|
const user = c.get("user");
|
|
5402
5402
|
if (!user) {
|
|
@@ -5413,13 +5413,13 @@ authRoutes.get("/me", chunkVHNTCB2X_cjs.requireAuth(), async (c) => {
|
|
|
5413
5413
|
return c.json({ error: "Failed to get user" }, 500);
|
|
5414
5414
|
}
|
|
5415
5415
|
});
|
|
5416
|
-
authRoutes.post("/refresh",
|
|
5416
|
+
authRoutes.post("/refresh", chunkHBUFGLEX_cjs.requireAuth(), async (c) => {
|
|
5417
5417
|
try {
|
|
5418
5418
|
const user = c.get("user");
|
|
5419
5419
|
if (!user) {
|
|
5420
5420
|
return c.json({ error: "Not authenticated" }, 401);
|
|
5421
5421
|
}
|
|
5422
|
-
const token = await
|
|
5422
|
+
const token = await chunkHBUFGLEX_cjs.AuthManager.generateToken(user.userId, user.email, user.role, c.env.JWT_SECRET);
|
|
5423
5423
|
cookie.setCookie(c, "auth_token", token, {
|
|
5424
5424
|
httpOnly: true,
|
|
5425
5425
|
secure: true,
|
|
@@ -5436,7 +5436,7 @@ authRoutes.post("/refresh", chunkVHNTCB2X_cjs.requireAuth(), async (c) => {
|
|
|
5436
5436
|
});
|
|
5437
5437
|
authRoutes.post(
|
|
5438
5438
|
"/register/form",
|
|
5439
|
-
|
|
5439
|
+
chunkHBUFGLEX_cjs.rateLimit({ max: 30, windowMs: 60 * 1e3, keyPrefix: "register" }),
|
|
5440
5440
|
async (c) => {
|
|
5441
5441
|
try {
|
|
5442
5442
|
const db = c.env.DB;
|
|
@@ -5483,7 +5483,7 @@ authRoutes.post(
|
|
|
5483
5483
|
</div>
|
|
5484
5484
|
`);
|
|
5485
5485
|
}
|
|
5486
|
-
const passwordHash = await
|
|
5486
|
+
const passwordHash = await chunkHBUFGLEX_cjs.AuthManager.hashPassword(password);
|
|
5487
5487
|
const role = isFirstUser ? "admin" : "viewer";
|
|
5488
5488
|
const userId = crypto.randomUUID();
|
|
5489
5489
|
const now = /* @__PURE__ */ new Date();
|
|
@@ -5518,7 +5518,7 @@ authRoutes.post(
|
|
|
5518
5518
|
await saveCustomData(db, userId, sanitized);
|
|
5519
5519
|
}
|
|
5520
5520
|
}
|
|
5521
|
-
const token = await
|
|
5521
|
+
const token = await chunkHBUFGLEX_cjs.AuthManager.generateToken(userId, normalizedEmail, role, c.env.JWT_SECRET);
|
|
5522
5522
|
cookie.setCookie(c, "auth_token", token, {
|
|
5523
5523
|
httpOnly: true,
|
|
5524
5524
|
secure: false,
|
|
@@ -5551,7 +5551,7 @@ authRoutes.post(
|
|
|
5551
5551
|
);
|
|
5552
5552
|
authRoutes.post(
|
|
5553
5553
|
"/login/form",
|
|
5554
|
-
|
|
5554
|
+
chunkHBUFGLEX_cjs.rateLimit({ max: 30, windowMs: 60 * 1e3, keyPrefix: "login" }),
|
|
5555
5555
|
async (c) => {
|
|
5556
5556
|
try {
|
|
5557
5557
|
const formData = await c.req.formData();
|
|
@@ -5575,7 +5575,7 @@ authRoutes.post(
|
|
|
5575
5575
|
</div>
|
|
5576
5576
|
`);
|
|
5577
5577
|
}
|
|
5578
|
-
const isValidPassword = await
|
|
5578
|
+
const isValidPassword = await chunkHBUFGLEX_cjs.AuthManager.verifyPassword(password, user.password_hash);
|
|
5579
5579
|
if (!isValidPassword) {
|
|
5580
5580
|
return c.html(html.html`
|
|
5581
5581
|
<div class="bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded">
|
|
@@ -5583,15 +5583,15 @@ authRoutes.post(
|
|
|
5583
5583
|
</div>
|
|
5584
5584
|
`);
|
|
5585
5585
|
}
|
|
5586
|
-
if (
|
|
5586
|
+
if (chunkHBUFGLEX_cjs.AuthManager.isLegacyHash(user.password_hash)) {
|
|
5587
5587
|
try {
|
|
5588
|
-
const newHash = await
|
|
5588
|
+
const newHash = await chunkHBUFGLEX_cjs.AuthManager.hashPassword(password);
|
|
5589
5589
|
await db.prepare("UPDATE users SET password_hash = ?, updated_at = ? WHERE id = ?").bind(newHash, Date.now(), user.id).run();
|
|
5590
5590
|
} catch (rehashError) {
|
|
5591
5591
|
console.error("Password rehash failed (non-fatal):", rehashError);
|
|
5592
5592
|
}
|
|
5593
5593
|
}
|
|
5594
|
-
const token = await
|
|
5594
|
+
const token = await chunkHBUFGLEX_cjs.AuthManager.generateToken(user.id, user.email, user.role, c.env.JWT_SECRET);
|
|
5595
5595
|
cookie.setCookie(c, "auth_token", token, {
|
|
5596
5596
|
httpOnly: true,
|
|
5597
5597
|
secure: false,
|
|
@@ -5633,7 +5633,7 @@ authRoutes.post(
|
|
|
5633
5633
|
);
|
|
5634
5634
|
authRoutes.post(
|
|
5635
5635
|
"/seed-admin",
|
|
5636
|
-
|
|
5636
|
+
chunkHBUFGLEX_cjs.rateLimit({ max: 10, windowMs: 60 * 1e3, keyPrefix: "seed-admin" }),
|
|
5637
5637
|
async (c) => {
|
|
5638
5638
|
try {
|
|
5639
5639
|
const db = c.env.DB;
|
|
@@ -5655,7 +5655,7 @@ authRoutes.post(
|
|
|
5655
5655
|
`).run();
|
|
5656
5656
|
const existingAdmin = await db.prepare("SELECT id FROM users WHERE email = ? OR username = ?").bind("admin@sonicjs.com", "admin").first();
|
|
5657
5657
|
if (existingAdmin) {
|
|
5658
|
-
const passwordHash2 = await
|
|
5658
|
+
const passwordHash2 = await chunkHBUFGLEX_cjs.AuthManager.hashPassword("sonicjs!");
|
|
5659
5659
|
await db.prepare("UPDATE users SET password_hash = ?, updated_at = ? WHERE id = ?").bind(passwordHash2, Date.now(), existingAdmin.id).run();
|
|
5660
5660
|
return c.json({
|
|
5661
5661
|
message: "Admin user already exists (password updated)",
|
|
@@ -5667,7 +5667,7 @@ authRoutes.post(
|
|
|
5667
5667
|
}
|
|
5668
5668
|
});
|
|
5669
5669
|
}
|
|
5670
|
-
const passwordHash = await
|
|
5670
|
+
const passwordHash = await chunkHBUFGLEX_cjs.AuthManager.hashPassword("sonicjs!");
|
|
5671
5671
|
const userId = "admin-user-id";
|
|
5672
5672
|
const now = Date.now();
|
|
5673
5673
|
const adminEmail = "admin@sonicjs.com".toLowerCase();
|
|
@@ -5888,7 +5888,7 @@ authRoutes.post("/accept-invitation", async (c) => {
|
|
|
5888
5888
|
if (existingUsername) {
|
|
5889
5889
|
return c.json({ error: "Username is already taken" }, 400);
|
|
5890
5890
|
}
|
|
5891
|
-
const passwordHash = await
|
|
5891
|
+
const passwordHash = await chunkHBUFGLEX_cjs.AuthManager.hashPassword(password);
|
|
5892
5892
|
const updateStmt = db.prepare(`
|
|
5893
5893
|
UPDATE users SET
|
|
5894
5894
|
username = ?,
|
|
@@ -5907,7 +5907,7 @@ authRoutes.post("/accept-invitation", async (c) => {
|
|
|
5907
5907
|
Date.now(),
|
|
5908
5908
|
invitedUser.id
|
|
5909
5909
|
).run();
|
|
5910
|
-
const authToken = await
|
|
5910
|
+
const authToken = await chunkHBUFGLEX_cjs.AuthManager.generateToken(invitedUser.id, invitedUser.email, invitedUser.role, c.env.JWT_SECRET);
|
|
5911
5911
|
cookie.setCookie(c, "auth_token", authToken, {
|
|
5912
5912
|
httpOnly: true,
|
|
5913
5913
|
secure: true,
|
|
@@ -5924,7 +5924,7 @@ authRoutes.post("/accept-invitation", async (c) => {
|
|
|
5924
5924
|
});
|
|
5925
5925
|
authRoutes.post(
|
|
5926
5926
|
"/request-password-reset",
|
|
5927
|
-
|
|
5927
|
+
chunkHBUFGLEX_cjs.rateLimit({ max: 3, windowMs: 15 * 60 * 1e3, keyPrefix: "password-reset" }),
|
|
5928
5928
|
async (c) => {
|
|
5929
5929
|
try {
|
|
5930
5930
|
const formData = await c.req.formData();
|
|
@@ -6142,7 +6142,7 @@ authRoutes.post("/reset-password", async (c) => {
|
|
|
6142
6142
|
if (Date.now() > user.password_reset_expires) {
|
|
6143
6143
|
return c.json({ error: "Reset token has expired" }, 400);
|
|
6144
6144
|
}
|
|
6145
|
-
const newPasswordHash = await
|
|
6145
|
+
const newPasswordHash = await chunkHBUFGLEX_cjs.AuthManager.hashPassword(password);
|
|
6146
6146
|
try {
|
|
6147
6147
|
const historyStmt = db.prepare(`
|
|
6148
6148
|
INSERT INTO password_history (id, user_id, password_hash, created_at)
|
|
@@ -9518,9 +9518,9 @@ function parseFieldValue(field, formData, options = {}) {
|
|
|
9518
9518
|
const { skipValidation = false } = options;
|
|
9519
9519
|
const value = formData.get(field.field_name);
|
|
9520
9520
|
const errors = [];
|
|
9521
|
-
const blocksConfig =
|
|
9521
|
+
const blocksConfig = chunkIKBAY2M2_cjs.getBlocksFieldConfig(field.field_options);
|
|
9522
9522
|
if (blocksConfig) {
|
|
9523
|
-
const parsed =
|
|
9523
|
+
const parsed = chunkIKBAY2M2_cjs.parseBlocksValue(value, blocksConfig);
|
|
9524
9524
|
if (!skipValidation && field.is_required && parsed.value.length === 0) {
|
|
9525
9525
|
parsed.errors.push(`${field.field_label} is required`);
|
|
9526
9526
|
}
|
|
@@ -9630,7 +9630,7 @@ function extractFieldData(fields, formData, options = {}) {
|
|
|
9630
9630
|
}
|
|
9631
9631
|
return { data, errors };
|
|
9632
9632
|
}
|
|
9633
|
-
adminContentRoutes.use("*",
|
|
9633
|
+
adminContentRoutes.use("*", chunkHBUFGLEX_cjs.requireAuth());
|
|
9634
9634
|
async function getCollectionFields(db, collectionId) {
|
|
9635
9635
|
const cache = chunkNZWFCUDA_cjs.getCacheService(chunkNZWFCUDA_cjs.CACHE_CONFIGS.collection);
|
|
9636
9636
|
return cache.getOrSet(
|
|
@@ -10321,7 +10321,7 @@ adminContentRoutes.put("/:id", async (c) => {
|
|
|
10321
10321
|
`);
|
|
10322
10322
|
}
|
|
10323
10323
|
});
|
|
10324
|
-
adminContentRoutes.post("/preview",
|
|
10324
|
+
adminContentRoutes.post("/preview", chunkHBUFGLEX_cjs.requireRole(["admin", "editor", "author"]), async (c) => {
|
|
10325
10325
|
try {
|
|
10326
10326
|
const formData = await c.req.formData();
|
|
10327
10327
|
const collectionId = formData.get("collection_id");
|
|
@@ -10699,7 +10699,7 @@ adminContentRoutes.post("/:id/restore/:version", async (c) => {
|
|
|
10699
10699
|
return c.json({ success: false, error: "Failed to restore version" });
|
|
10700
10700
|
}
|
|
10701
10701
|
});
|
|
10702
|
-
adminContentRoutes.get("/:id/version/:version/preview",
|
|
10702
|
+
adminContentRoutes.get("/:id/version/:version/preview", chunkHBUFGLEX_cjs.requireRole(["admin", "editor", "author"]), async (c) => {
|
|
10703
10703
|
try {
|
|
10704
10704
|
const id = c.req.param("id");
|
|
10705
10705
|
const version = parseInt(c.req.param("version") || "0");
|
|
@@ -12700,14 +12700,14 @@ function renderUsersListPage(data) {
|
|
|
12700
12700
|
|
|
12701
12701
|
// src/routes/admin-users.ts
|
|
12702
12702
|
var userRoutes = new hono.Hono();
|
|
12703
|
-
userRoutes.use("*",
|
|
12704
|
-
userRoutes.use("/users/*",
|
|
12705
|
-
userRoutes.use("/users",
|
|
12706
|
-
userRoutes.use("/invite-user",
|
|
12707
|
-
userRoutes.use("/resend-invitation/*",
|
|
12708
|
-
userRoutes.use("/cancel-invitation/*",
|
|
12709
|
-
userRoutes.use("/activity-logs",
|
|
12710
|
-
userRoutes.use("/activity-logs/*",
|
|
12703
|
+
userRoutes.use("*", chunkHBUFGLEX_cjs.requireAuth());
|
|
12704
|
+
userRoutes.use("/users/*", chunkHBUFGLEX_cjs.requireRole(["admin"]));
|
|
12705
|
+
userRoutes.use("/users", chunkHBUFGLEX_cjs.requireRole(["admin"]));
|
|
12706
|
+
userRoutes.use("/invite-user", chunkHBUFGLEX_cjs.requireRole(["admin"]));
|
|
12707
|
+
userRoutes.use("/resend-invitation/*", chunkHBUFGLEX_cjs.requireRole(["admin"]));
|
|
12708
|
+
userRoutes.use("/cancel-invitation/*", chunkHBUFGLEX_cjs.requireRole(["admin"]));
|
|
12709
|
+
userRoutes.use("/activity-logs", chunkHBUFGLEX_cjs.requireRole(["admin"]));
|
|
12710
|
+
userRoutes.use("/activity-logs/*", chunkHBUFGLEX_cjs.requireRole(["admin"]));
|
|
12711
12711
|
userRoutes.get("/", (c) => {
|
|
12712
12712
|
return c.redirect("/admin/dashboard");
|
|
12713
12713
|
});
|
|
@@ -12877,7 +12877,7 @@ userRoutes.put("/profile", async (c) => {
|
|
|
12877
12877
|
}
|
|
12878
12878
|
await saveCustomData(db, user.userId, sanitized);
|
|
12879
12879
|
}
|
|
12880
|
-
await
|
|
12880
|
+
await chunkHBUFGLEX_cjs.logActivity(
|
|
12881
12881
|
db,
|
|
12882
12882
|
user.userId,
|
|
12883
12883
|
"profile.update",
|
|
@@ -12940,7 +12940,7 @@ userRoutes.post("/profile/avatar", async (c) => {
|
|
|
12940
12940
|
SELECT first_name, last_name FROM users WHERE id = ?
|
|
12941
12941
|
`);
|
|
12942
12942
|
const userData = await userStmt.bind(user.userId).first();
|
|
12943
|
-
await
|
|
12943
|
+
await chunkHBUFGLEX_cjs.logActivity(
|
|
12944
12944
|
db,
|
|
12945
12945
|
user.userId,
|
|
12946
12946
|
"profile.avatar_update",
|
|
@@ -13011,7 +13011,7 @@ userRoutes.post("/profile/password", async (c) => {
|
|
|
13011
13011
|
dismissible: true
|
|
13012
13012
|
}));
|
|
13013
13013
|
}
|
|
13014
|
-
const validPassword = await
|
|
13014
|
+
const validPassword = await chunkHBUFGLEX_cjs.AuthManager.verifyPassword(currentPassword, userData.password_hash);
|
|
13015
13015
|
if (!validPassword) {
|
|
13016
13016
|
return c.html(renderAlert2({
|
|
13017
13017
|
type: "error",
|
|
@@ -13019,7 +13019,7 @@ userRoutes.post("/profile/password", async (c) => {
|
|
|
13019
13019
|
dismissible: true
|
|
13020
13020
|
}));
|
|
13021
13021
|
}
|
|
13022
|
-
const newPasswordHash = await
|
|
13022
|
+
const newPasswordHash = await chunkHBUFGLEX_cjs.AuthManager.hashPassword(newPassword);
|
|
13023
13023
|
const historyStmt = db.prepare(`
|
|
13024
13024
|
INSERT INTO password_history (id, user_id, password_hash, created_at)
|
|
13025
13025
|
VALUES (?, ?, ?, ?)
|
|
@@ -13035,7 +13035,7 @@ userRoutes.post("/profile/password", async (c) => {
|
|
|
13035
13035
|
WHERE id = ?
|
|
13036
13036
|
`);
|
|
13037
13037
|
await updateStmt.bind(newPasswordHash, Date.now(), user.userId).run();
|
|
13038
|
-
await
|
|
13038
|
+
await chunkHBUFGLEX_cjs.logActivity(
|
|
13039
13039
|
db,
|
|
13040
13040
|
user.userId,
|
|
13041
13041
|
"profile.password_change",
|
|
@@ -13102,7 +13102,7 @@ userRoutes.get("/users", async (c) => {
|
|
|
13102
13102
|
`);
|
|
13103
13103
|
const countResult = await countStmt.bind(...params).first();
|
|
13104
13104
|
const totalUsers = countResult?.total || 0;
|
|
13105
|
-
await
|
|
13105
|
+
await chunkHBUFGLEX_cjs.logActivity(
|
|
13106
13106
|
db,
|
|
13107
13107
|
user.userId,
|
|
13108
13108
|
"users.list_view",
|
|
@@ -13260,7 +13260,7 @@ userRoutes.post("/users/new", async (c) => {
|
|
|
13260
13260
|
dismissible: true
|
|
13261
13261
|
}));
|
|
13262
13262
|
}
|
|
13263
|
-
const passwordHash = await
|
|
13263
|
+
const passwordHash = await chunkHBUFGLEX_cjs.AuthManager.hashPassword(password);
|
|
13264
13264
|
const userId = crypto.randomUUID();
|
|
13265
13265
|
const createStmt = db.prepare(`
|
|
13266
13266
|
INSERT INTO users (
|
|
@@ -13283,7 +13283,7 @@ userRoutes.post("/users/new", async (c) => {
|
|
|
13283
13283
|
Date.now(),
|
|
13284
13284
|
Date.now()
|
|
13285
13285
|
).run();
|
|
13286
|
-
await
|
|
13286
|
+
await chunkHBUFGLEX_cjs.logActivity(
|
|
13287
13287
|
db,
|
|
13288
13288
|
user.userId,
|
|
13289
13289
|
"user!.create",
|
|
@@ -13322,7 +13322,7 @@ userRoutes.get("/users/:id", async (c) => {
|
|
|
13322
13322
|
if (!userRecord) {
|
|
13323
13323
|
return c.json({ error: "User not found" }, 404);
|
|
13324
13324
|
}
|
|
13325
|
-
await
|
|
13325
|
+
await chunkHBUFGLEX_cjs.logActivity(
|
|
13326
13326
|
db,
|
|
13327
13327
|
user.userId,
|
|
13328
13328
|
"user!.view",
|
|
@@ -13548,7 +13548,7 @@ userRoutes.put("/users/:id", async (c) => {
|
|
|
13548
13548
|
userId
|
|
13549
13549
|
).run();
|
|
13550
13550
|
if (newPassword) {
|
|
13551
|
-
const passwordHash = await
|
|
13551
|
+
const passwordHash = await chunkHBUFGLEX_cjs.AuthManager.hashPassword(newPassword);
|
|
13552
13552
|
const updatePasswordStmt = db.prepare(`
|
|
13553
13553
|
UPDATE users SET password_hash = ?, updated_at = ? WHERE id = ?
|
|
13554
13554
|
`);
|
|
@@ -13602,7 +13602,7 @@ userRoutes.put("/users/:id", async (c) => {
|
|
|
13602
13602
|
).run();
|
|
13603
13603
|
}
|
|
13604
13604
|
}
|
|
13605
|
-
await
|
|
13605
|
+
await chunkHBUFGLEX_cjs.logActivity(
|
|
13606
13606
|
db,
|
|
13607
13607
|
user.userId,
|
|
13608
13608
|
"user.update",
|
|
@@ -13647,7 +13647,7 @@ userRoutes.post("/users/:id/toggle", async (c) => {
|
|
|
13647
13647
|
UPDATE users SET is_active = ?, updated_at = ? WHERE id = ?
|
|
13648
13648
|
`);
|
|
13649
13649
|
await toggleStmt.bind(active ? 1 : 0, Date.now(), userId).run();
|
|
13650
|
-
await
|
|
13650
|
+
await chunkHBUFGLEX_cjs.logActivity(
|
|
13651
13651
|
db,
|
|
13652
13652
|
user.userId,
|
|
13653
13653
|
active ? "user.activate" : "user.deactivate",
|
|
@@ -13688,7 +13688,7 @@ userRoutes.delete("/users/:id", async (c) => {
|
|
|
13688
13688
|
DELETE FROM users WHERE id = ?
|
|
13689
13689
|
`);
|
|
13690
13690
|
await deleteStmt.bind(userId).run();
|
|
13691
|
-
await
|
|
13691
|
+
await chunkHBUFGLEX_cjs.logActivity(
|
|
13692
13692
|
db,
|
|
13693
13693
|
user.userId,
|
|
13694
13694
|
"user!.hard_delete",
|
|
@@ -13707,7 +13707,7 @@ userRoutes.delete("/users/:id", async (c) => {
|
|
|
13707
13707
|
UPDATE users SET is_active = 0, updated_at = ? WHERE id = ?
|
|
13708
13708
|
`);
|
|
13709
13709
|
await deleteStmt.bind(Date.now(), userId).run();
|
|
13710
|
-
await
|
|
13710
|
+
await chunkHBUFGLEX_cjs.logActivity(
|
|
13711
13711
|
db,
|
|
13712
13712
|
user.userId,
|
|
13713
13713
|
"user!.soft_delete",
|
|
@@ -13773,7 +13773,7 @@ userRoutes.post("/invite-user", async (c) => {
|
|
|
13773
13773
|
Date.now(),
|
|
13774
13774
|
Date.now()
|
|
13775
13775
|
).run();
|
|
13776
|
-
await
|
|
13776
|
+
await chunkHBUFGLEX_cjs.logActivity(
|
|
13777
13777
|
db,
|
|
13778
13778
|
user.userId,
|
|
13779
13779
|
"user!.invite_sent",
|
|
@@ -13830,7 +13830,7 @@ userRoutes.post("/resend-invitation/:id", async (c) => {
|
|
|
13830
13830
|
Date.now(),
|
|
13831
13831
|
userId
|
|
13832
13832
|
).run();
|
|
13833
|
-
await
|
|
13833
|
+
await chunkHBUFGLEX_cjs.logActivity(
|
|
13834
13834
|
db,
|
|
13835
13835
|
user.userId,
|
|
13836
13836
|
"user!.invitation_resent",
|
|
@@ -13866,7 +13866,7 @@ userRoutes.delete("/cancel-invitation/:id", async (c) => {
|
|
|
13866
13866
|
}
|
|
13867
13867
|
const deleteStmt = db.prepare(`DELETE FROM users WHERE id = ?`);
|
|
13868
13868
|
await deleteStmt.bind(userId).run();
|
|
13869
|
-
await
|
|
13869
|
+
await chunkHBUFGLEX_cjs.logActivity(
|
|
13870
13870
|
db,
|
|
13871
13871
|
user.userId,
|
|
13872
13872
|
"user!.invitation_cancelled",
|
|
@@ -13949,7 +13949,7 @@ userRoutes.get("/activity-logs", async (c) => {
|
|
|
13949
13949
|
...log,
|
|
13950
13950
|
details: log.details ? JSON.parse(log.details) : null
|
|
13951
13951
|
}));
|
|
13952
|
-
await
|
|
13952
|
+
await chunkHBUFGLEX_cjs.logActivity(
|
|
13953
13953
|
db,
|
|
13954
13954
|
user.userId,
|
|
13955
13955
|
"activity.logs_viewed",
|
|
@@ -14056,7 +14056,7 @@ userRoutes.get("/activity-logs/export", async (c) => {
|
|
|
14056
14056
|
csvRows.push(row.join(","));
|
|
14057
14057
|
}
|
|
14058
14058
|
const csvContent = csvRows.join("\n");
|
|
14059
|
-
await
|
|
14059
|
+
await chunkHBUFGLEX_cjs.logActivity(
|
|
14060
14060
|
db,
|
|
14061
14061
|
user.userId,
|
|
14062
14062
|
"activity.logs_exported",
|
|
@@ -15395,7 +15395,7 @@ var fileValidationSchema2 = zod.z.object({
|
|
|
15395
15395
|
// 50MB max
|
|
15396
15396
|
});
|
|
15397
15397
|
var adminMediaRoutes = new hono.Hono();
|
|
15398
|
-
adminMediaRoutes.use("*",
|
|
15398
|
+
adminMediaRoutes.use("*", chunkHBUFGLEX_cjs.requireAuth());
|
|
15399
15399
|
adminMediaRoutes.get("/", async (c) => {
|
|
15400
15400
|
try {
|
|
15401
15401
|
const user = c.get("user");
|
|
@@ -15981,7 +15981,7 @@ adminMediaRoutes.put("/:id", async (c) => {
|
|
|
15981
15981
|
`);
|
|
15982
15982
|
}
|
|
15983
15983
|
});
|
|
15984
|
-
adminMediaRoutes.delete("/cleanup",
|
|
15984
|
+
adminMediaRoutes.delete("/cleanup", chunkHBUFGLEX_cjs.requireRole("admin"), async (c) => {
|
|
15985
15985
|
try {
|
|
15986
15986
|
const db = c.env.DB;
|
|
15987
15987
|
const allMediaStmt = db.prepare("SELECT id, r2_key, filename FROM media WHERE deleted_at IS NULL");
|
|
@@ -18206,7 +18206,7 @@ function renderEmailSettingsContent(plugin, settings) {
|
|
|
18206
18206
|
|
|
18207
18207
|
// src/routes/admin-plugins.ts
|
|
18208
18208
|
var adminPluginRoutes = new hono.Hono();
|
|
18209
|
-
adminPluginRoutes.use("*",
|
|
18209
|
+
adminPluginRoutes.use("*", chunkHBUFGLEX_cjs.requireAuth());
|
|
18210
18210
|
var AVAILABLE_PLUGINS = [
|
|
18211
18211
|
{
|
|
18212
18212
|
id: "third-party-faq",
|
|
@@ -19666,7 +19666,7 @@ function renderLogConfigPage(data) {
|
|
|
19666
19666
|
|
|
19667
19667
|
// src/routes/admin-logs.ts
|
|
19668
19668
|
var adminLogsRoutes = new hono.Hono();
|
|
19669
|
-
adminLogsRoutes.use("*",
|
|
19669
|
+
adminLogsRoutes.use("*", chunkHBUFGLEX_cjs.requireAuth());
|
|
19670
19670
|
adminLogsRoutes.get("/", async (c) => {
|
|
19671
19671
|
try {
|
|
19672
19672
|
const user = c.get("user");
|
|
@@ -21994,9 +21994,9 @@ function renderStorageUsage(databaseSizeBytes, mediaSizeBytes) {
|
|
|
21994
21994
|
}
|
|
21995
21995
|
|
|
21996
21996
|
// src/routes/admin-dashboard.ts
|
|
21997
|
-
var VERSION =
|
|
21997
|
+
var VERSION = chunkIKBAY2M2_cjs.getCoreVersion();
|
|
21998
21998
|
var router = new hono.Hono();
|
|
21999
|
-
router.use("*",
|
|
21999
|
+
router.use("*", chunkHBUFGLEX_cjs.requireAuth());
|
|
22000
22000
|
router.get("/", async (c) => {
|
|
22001
22001
|
const user = c.get("user");
|
|
22002
22002
|
try {
|
|
@@ -23815,10 +23815,10 @@ function renderCollectionFormPage(data) {
|
|
|
23815
23815
|
|
|
23816
23816
|
// src/routes/admin-collections.ts
|
|
23817
23817
|
var adminCollectionsRoutes = new hono.Hono();
|
|
23818
|
-
adminCollectionsRoutes.use("*",
|
|
23819
|
-
adminCollectionsRoutes.post("*",
|
|
23820
|
-
adminCollectionsRoutes.put("*",
|
|
23821
|
-
adminCollectionsRoutes.delete("*",
|
|
23818
|
+
adminCollectionsRoutes.use("*", chunkHBUFGLEX_cjs.requireAuth());
|
|
23819
|
+
adminCollectionsRoutes.post("*", chunkHBUFGLEX_cjs.requireRole(["admin"]));
|
|
23820
|
+
adminCollectionsRoutes.put("*", chunkHBUFGLEX_cjs.requireRole(["admin"]));
|
|
23821
|
+
adminCollectionsRoutes.delete("*", chunkHBUFGLEX_cjs.requireRole(["admin"]));
|
|
23822
23822
|
adminCollectionsRoutes.get("/", async (c) => {
|
|
23823
23823
|
try {
|
|
23824
23824
|
const user = c.get("user");
|
|
@@ -26014,7 +26014,7 @@ function renderDatabaseToolsSettings(settings) {
|
|
|
26014
26014
|
|
|
26015
26015
|
// src/routes/admin-settings.ts
|
|
26016
26016
|
var adminSettingsRoutes = new hono.Hono();
|
|
26017
|
-
adminSettingsRoutes.use("*",
|
|
26017
|
+
adminSettingsRoutes.use("*", chunkHBUFGLEX_cjs.requireAuth());
|
|
26018
26018
|
function getMockSettings(user) {
|
|
26019
26019
|
return {
|
|
26020
26020
|
general: {
|
|
@@ -26182,7 +26182,7 @@ adminSettingsRoutes.get("/database-tools", (c) => {
|
|
|
26182
26182
|
adminSettingsRoutes.get("/api/migrations/status", async (c) => {
|
|
26183
26183
|
try {
|
|
26184
26184
|
const db = c.env.DB;
|
|
26185
|
-
const migrationService = new
|
|
26185
|
+
const migrationService = new chunkXK3TKOLQ_cjs.MigrationService(db);
|
|
26186
26186
|
const status = await migrationService.getMigrationStatus();
|
|
26187
26187
|
return c.json({
|
|
26188
26188
|
success: true,
|
|
@@ -26206,7 +26206,7 @@ adminSettingsRoutes.post("/api/migrations/run", async (c) => {
|
|
|
26206
26206
|
}, 403);
|
|
26207
26207
|
}
|
|
26208
26208
|
const db = c.env.DB;
|
|
26209
|
-
const migrationService = new
|
|
26209
|
+
const migrationService = new chunkXK3TKOLQ_cjs.MigrationService(db);
|
|
26210
26210
|
const result = await migrationService.runPendingMigrations();
|
|
26211
26211
|
return c.json({
|
|
26212
26212
|
success: result.success,
|
|
@@ -26224,7 +26224,7 @@ adminSettingsRoutes.post("/api/migrations/run", async (c) => {
|
|
|
26224
26224
|
adminSettingsRoutes.get("/api/migrations/validate", async (c) => {
|
|
26225
26225
|
try {
|
|
26226
26226
|
const db = c.env.DB;
|
|
26227
|
-
const migrationService = new
|
|
26227
|
+
const migrationService = new chunkXK3TKOLQ_cjs.MigrationService(db);
|
|
26228
26228
|
const validation = await migrationService.validateSchema();
|
|
26229
26229
|
return c.json({
|
|
26230
26230
|
success: true,
|
|
@@ -28114,7 +28114,7 @@ function renderFormCreatePage(data) {
|
|
|
28114
28114
|
|
|
28115
28115
|
// src/routes/admin-forms.ts
|
|
28116
28116
|
var adminFormsRoutes = new hono.Hono();
|
|
28117
|
-
adminFormsRoutes.use("*",
|
|
28117
|
+
adminFormsRoutes.use("*", chunkHBUFGLEX_cjs.requireAuth());
|
|
28118
28118
|
adminFormsRoutes.get("/", async (c) => {
|
|
28119
28119
|
try {
|
|
28120
28120
|
const user = c.get("user");
|
|
@@ -29287,9 +29287,9 @@ function renderAPIReferencePage(data) {
|
|
|
29287
29287
|
}
|
|
29288
29288
|
|
|
29289
29289
|
// src/routes/admin-api-reference.ts
|
|
29290
|
-
var VERSION2 =
|
|
29290
|
+
var VERSION2 = chunkIKBAY2M2_cjs.getCoreVersion();
|
|
29291
29291
|
var router2 = new hono.Hono();
|
|
29292
|
-
router2.use("*",
|
|
29292
|
+
router2.use("*", chunkHBUFGLEX_cjs.requireAuth());
|
|
29293
29293
|
router2.get("/", async (c) => {
|
|
29294
29294
|
const user = c.get("user");
|
|
29295
29295
|
try {
|
|
@@ -29380,5 +29380,5 @@ exports.router2 = router2;
|
|
|
29380
29380
|
exports.test_cleanup_default = test_cleanup_default;
|
|
29381
29381
|
exports.userProfilesPlugin = userProfilesPlugin;
|
|
29382
29382
|
exports.userRoutes = userRoutes;
|
|
29383
|
-
//# sourceMappingURL=chunk-
|
|
29384
|
-
//# sourceMappingURL=chunk-
|
|
29383
|
+
//# sourceMappingURL=chunk-DHTCZZUB.cjs.map
|
|
29384
|
+
//# sourceMappingURL=chunk-DHTCZZUB.cjs.map
|