fix auto plugins not working if someone was allowed in through purgatory
This commit is contained in:
@@ -17,7 +17,7 @@ import { metrics } from "./metrics";
|
|||||||
import { ensureDataDir } from "./paths";
|
import { ensureDataDir } from "./paths";
|
||||||
import { handleAuthRoutes } from "./server/routes/auth-routes";
|
import { handleAuthRoutes } from "./server/routes/auth-routes";
|
||||||
import { handleAutoScriptsRoutes } from "./server/routes/auto-scripts-routes";
|
import { handleAutoScriptsRoutes } from "./server/routes/auto-scripts-routes";
|
||||||
import { handleEnrollmentRoutes } from "./server/routes/enrollment-routes";
|
import { handleEnrollmentRoutes, setPostApproveHook } from "./server/routes/enrollment-routes";
|
||||||
import { handleBuildRoutes } from "./server/routes/build-routes";
|
import { handleBuildRoutes } from "./server/routes/build-routes";
|
||||||
import { handleAssetsRoutes } from "./server/routes/assets-routes";
|
import { handleAssetsRoutes } from "./server/routes/assets-routes";
|
||||||
import { handleDeployRoutes } from "./server/routes/deploy-routes";
|
import { handleDeployRoutes } from "./server/routes/deploy-routes";
|
||||||
@@ -297,6 +297,23 @@ const pendingCommandReplies = new Map<string, PendingCommandReply>();
|
|||||||
|
|
||||||
async function startServer() {
|
async function startServer() {
|
||||||
await loadPluginState();
|
await loadPluginState();
|
||||||
|
|
||||||
|
setPostApproveHook((clientId: string) => {
|
||||||
|
const client = clientManager.getClient(clientId);
|
||||||
|
if (!client) return;
|
||||||
|
dispatchAutoLoadPlugins(
|
||||||
|
client,
|
||||||
|
pluginState,
|
||||||
|
notificationPluginHandlers.isPluginLoaded,
|
||||||
|
notificationPluginHandlers.isPluginLoading,
|
||||||
|
notificationPluginHandlers.markPluginLoading,
|
||||||
|
notificationPluginHandlers.enqueuePluginEvent,
|
||||||
|
loadPluginBundle,
|
||||||
|
).catch((err) => {
|
||||||
|
logger.warn(`[enrollment] failed to dispatch auto-load plugins for ${clientId}: ${(err as Error).message}`);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
await cleanupFileTransferTempFiles(DATA_DIR);
|
await cleanupFileTransferTempFiles(DATA_DIR);
|
||||||
logger.info("[filebrowser] cleaned stale transfer temp files on startup");
|
logger.info("[filebrowser] cleaned stale transfer temp files on startup");
|
||||||
let tls:
|
let tls:
|
||||||
@@ -468,7 +485,9 @@ async function startServer() {
|
|||||||
notificationPluginHandlers.markPluginLoading,
|
notificationPluginHandlers.markPluginLoading,
|
||||||
notificationPluginHandlers.enqueuePluginEvent,
|
notificationPluginHandlers.enqueuePluginEvent,
|
||||||
loadPluginBundle,
|
loadPluginBundle,
|
||||||
);
|
).catch((err) => {
|
||||||
|
logger.warn(`[plugin-autoload] dispatch error for ${info.id}: ${(err as Error).message}`);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
takePendingNotificationScreenshot: takePendingNotificationScreenshotForClient,
|
takePendingNotificationScreenshot: takePendingNotificationScreenshotForClient,
|
||||||
storeNotificationScreenshot: storeNotificationScreenshotForPending,
|
storeNotificationScreenshot: storeNotificationScreenshotForPending,
|
||||||
|
|||||||
@@ -15,6 +15,12 @@ import { logAudit, AuditAction } from "../../auditLog";
|
|||||||
import * as clientManager from "../../clientManager";
|
import * as clientManager from "../../clientManager";
|
||||||
import { setOnlineState } from "../../db";
|
import { setOnlineState } from "../../db";
|
||||||
|
|
||||||
|
let _postApproveHook: ((clientId: string) => void) | undefined;
|
||||||
|
|
||||||
|
export function setPostApproveHook(hook: (clientId: string) => void): void {
|
||||||
|
_postApproveHook = hook;
|
||||||
|
}
|
||||||
|
|
||||||
export async function handleEnrollmentRoutes(
|
export async function handleEnrollmentRoutes(
|
||||||
req: Request,
|
req: Request,
|
||||||
url: URL,
|
url: URL,
|
||||||
@@ -62,6 +68,8 @@ export async function handleEnrollmentRoutes(
|
|||||||
|
|
||||||
setClientEnrollmentStatus(clientId, "approved", user.username);
|
setClientEnrollmentStatus(clientId, "approved", user.username);
|
||||||
|
|
||||||
|
_postApproveHook?.(clientId);
|
||||||
|
|
||||||
logAudit({
|
logAudit({
|
||||||
timestamp: Date.now(),
|
timestamp: Date.now(),
|
||||||
username: user.username,
|
username: user.username,
|
||||||
@@ -175,7 +183,12 @@ export async function handleEnrollmentRoutes(
|
|||||||
status as "approved" | "denied" | "pending",
|
status as "approved" | "denied" | "pending",
|
||||||
action === "approve" ? user.username : undefined,
|
action === "approve" ? user.username : undefined,
|
||||||
);
|
);
|
||||||
if (ok) updated++;
|
if (ok) {
|
||||||
|
updated++;
|
||||||
|
if (action === "approve") {
|
||||||
|
_postApproveHook?.(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
logAudit({
|
logAudit({
|
||||||
|
|||||||
Reference in New Issue
Block a user