로그인할 때마다 다른 디바이스에서 삭제된 파일을 스캔하여 현재 디바이스에서도 삭제하도록 구현

This commit is contained in:
static
2025-07-12 03:27:49 +09:00
parent fa7ba451c3
commit eda5ff7570
10 changed files with 56 additions and 1 deletions

View File

@@ -9,6 +9,7 @@
requestLogin,
requestClientRegistrationAndSessionUpgrade,
requestMasterKeyDownload,
requestDeletedFilesCleanup,
} from "./service";
let { data } = $props();
@@ -41,6 +42,7 @@
$masterKeyStore ||
(await requestMasterKeyDownload($clientKeyStore!.decryptKey, $clientKeyStore!.verifyKey))
) {
await requestDeletedFilesCleanup();
await goto(data.redirectPath);
} else {
await redirect("/client/pending");

View File

@@ -2,6 +2,7 @@ import { callPostApi } from "$lib/hooks";
import type { LoginRequest } from "$lib/server/schemas";
export { requestLogout } from "$lib/services/auth";
export { requestDeletedFilesCleanup } from "$lib/services/file";
export {
requestClientRegistrationAndSessionUpgrade,
requestMasterKeyDownload,

View File

@@ -15,6 +15,7 @@
importClientKeys,
requestClientRegistrationAndSessionUpgrade,
requestInitialMasterKeyAndHmacSecretRegistration,
requestDeletedFilesCleanup,
} from "./service";
import IconKey from "~icons/material-symbols/key";
@@ -104,6 +105,7 @@
return;
}
await requestDeletedFilesCleanup();
await goto("/client/pending?redirect=" + encodeURIComponent(data.redirectPath));
};

View File

@@ -15,6 +15,7 @@ import { deserializeClientKeys } from "$lib/modules/key";
import { clientKeyStore } from "$lib/stores";
export { requestLogout } from "$lib/services/auth";
export { requestDeletedFilesCleanup } from "$lib/services/file";
export {
requestClientRegistrationAndSessionUpgrade,
requestInitialMasterKeyAndHmacSecretRegistration,

View File

@@ -0,0 +1,11 @@
import { json } from "@sveltejs/kit";
import { authorize } from "$lib/server/modules/auth";
import { fileListResponse, type FileListResponse } from "$lib/server/schemas";
import { getFileList } from "$lib/server/services/file";
import type { RequestHandler } from "./$types";
export const GET: RequestHandler = async ({ locals }) => {
const { userId } = await authorize(locals, "activeClient");
const { files } = await getFileList(userId);
return json(fileListResponse.parse({ files } satisfies FileListResponse));
};