파일 생성 시각 및 파일 마지막 수정 시각을 저장하도록 변경

파일 마지막 수정 시각은 반드시 지정되어야 하며, 파일 시스템에서 읽어옵니다. 파일 생성 시각은 선택적으로 지정될 수 있으며, 이미지일 경우 EXIF에서 추출을 시도합니다. 두 값 모두 클라이언트에서 암호화되어 서버에 저장됩니다.
This commit is contained in:
static
2025-01-13 07:06:31 +09:00
parent 8a620fac78
commit f914026922
14 changed files with 145 additions and 9 deletions

View File

@@ -16,8 +16,16 @@ export const GET: RequestHandler = async ({ locals, params }) => {
if (!zodRes.success) error(400, "Invalid path parameters");
const { id } = zodRes.data;
const { mekVersion, encDek, dekVersion, contentType, encContentIv, encName } =
await getFileInformation(userId, id);
const {
mekVersion,
encDek,
dekVersion,
contentType,
encContentIv,
encName,
encCreatedAt,
encLastModifiedAt,
} = await getFileInformation(userId, id);
return json(
fileInfoResponse.parse({
mekVersion,
@@ -27,6 +35,10 @@ export const GET: RequestHandler = async ({ locals, params }) => {
contentIv: encContentIv,
name: encName.ciphertext,
nameIv: encName.iv,
createdAt: encCreatedAt?.ciphertext,
createdAtIv: encCreatedAt?.iv,
lastModifiedAt: encLastModifiedAt.ciphertext,
lastModifiedAtIv: encLastModifiedAt.iv,
} satisfies FileInfoResponse),
);
};

View File

@@ -27,7 +27,13 @@ export const POST: RequestHandler = async ({ locals, request }) => {
contentIv,
name,
nameIv,
createdAt,
createdAtIv,
lastModifiedAt,
lastModifiedAtIv,
} = zodRes.data;
if ((createdAt && !createdAtIv) || (!createdAt && createdAtIv))
error(400, "Invalid request body");
await uploadFile(
{
@@ -42,6 +48,10 @@ export const POST: RequestHandler = async ({ locals, request }) => {
encContentIv: contentIv,
encName: name,
encNameIv: nameIv,
encCreatedAt: createdAt ?? null,
encCreatedAtIv: createdAtIv ?? null,
encLastModifiedAt: lastModifiedAt,
encLastModifiedAtIv: lastModifiedAtIv,
},
content.stream(),
);