mirror of
https://github.com/kmc7468/arkvault.git
synced 2025-12-16 15:08:46 +00:00
파일 생성 시각 및 파일 마지막 수정 시각을 저장하도록 변경
파일 마지막 수정 시각은 반드시 지정되어야 하며, 파일 시스템에서 읽어옵니다. 파일 생성 시각은 선택적으로 지정될 수 있으며, 이미지일 경우 EXIF에서 추출을 시도합니다. 두 값 모두 클라이언트에서 암호화되어 서버에 저장됩니다.
This commit is contained in:
@@ -28,6 +28,10 @@ export interface NewFileParams {
|
||||
encContentIv: string;
|
||||
encName: string;
|
||||
encNameIv: string;
|
||||
encCreatedAt: string | null;
|
||||
encCreatedAtIv: string | null;
|
||||
encLastModifiedAt: string;
|
||||
encLastModifiedAtIv: string;
|
||||
}
|
||||
|
||||
export const registerDirectory = async (params: NewDirectoryParams) => {
|
||||
@@ -154,7 +158,12 @@ export const unregisterDirectory = async (userId: number, directoryId: number) =
|
||||
};
|
||||
|
||||
export const registerFile = async (params: NewFileParams) => {
|
||||
if ((params.hskVersion && !params.contentHmac) || (!params.hskVersion && params.contentHmac)) {
|
||||
if (
|
||||
(params.hskVersion && !params.contentHmac) ||
|
||||
(!params.hskVersion && params.contentHmac) ||
|
||||
(params.encCreatedAt && !params.encCreatedAtIv) ||
|
||||
(!params.encCreatedAt && params.encCreatedAtIv)
|
||||
) {
|
||||
throw new Error("Invalid arguments");
|
||||
}
|
||||
|
||||
@@ -194,6 +203,14 @@ export const registerFile = async (params: NewFileParams) => {
|
||||
dekVersion: params.dekVersion,
|
||||
encContentIv: params.encContentIv,
|
||||
encName: { ciphertext: params.encName, iv: params.encNameIv },
|
||||
encCreatedAt:
|
||||
params.encCreatedAt && params.encCreatedAtIv
|
||||
? { ciphertext: params.encCreatedAt, iv: params.encCreatedAtIv }
|
||||
: null,
|
||||
encLastModifiedAt: {
|
||||
ciphertext: params.encLastModifiedAt,
|
||||
iv: params.encLastModifiedAtIv,
|
||||
},
|
||||
})
|
||||
.returning({ id: file.id });
|
||||
const { id: fileId } = newFiles[0]!;
|
||||
|
||||
@@ -61,6 +61,8 @@ export const file = sqliteTable(
|
||||
contentType: text("content_type").notNull(),
|
||||
encContentIv: text("encrypted_content_iv").notNull(), // Base64
|
||||
encName: ciphertext("encrypted_name").notNull(),
|
||||
encCreatedAt: ciphertext("encrypted_created_at"),
|
||||
encLastModifiedAt: ciphertext("encrypted_last_modified_at").notNull(),
|
||||
},
|
||||
(t) => ({
|
||||
ref1: foreignKey({
|
||||
|
||||
Reference in New Issue
Block a user