update config

This commit is contained in:
Nicolas 2026-09-19 14:49:47 +02:00
parent 0962c2cc1f
commit 9758fe75f9
3 changed files with 17 additions and 4 deletions

View file

@ -15,7 +15,8 @@
"label": "Vidéos",
"dir": "./uploads/videos",
"allowDirectories": true,
"allowedMimeTypes": ["video/*"]
"allowedMimeTypes": ["video/*"],
"permissions": "0o666"
},
{ "name": "divers", "label": "Divers", "dir": "./uploads/divers" }
],

View file

@ -48,6 +48,11 @@
}
}
]
},
"permissions":{
"type":"string",
"default":"0o666",
"description": "Mode d'écriture sur le disque"
}
}
}

View file

@ -60,6 +60,12 @@ export interface DropTarget {
* valeur globale `allowedMimeTypes`. Toujours résolu après parsing.
*/
allowedMimeTypes: MimePolicy;
/**
* Mode de permission d'écriture
* Par défaut 0o666
*/
permission: string;
}
/** Liste non vide de cibles de dépôt ; la première est la cible par défaut. */
@ -204,7 +210,7 @@ function parseMimePolicy(value: unknown, label = 'allowedMimeTypes'): MimePolicy
if (!valid) {
throw new ConfigError(
`${label} : entrée invalide « ${entry} » ` +
'(formes acceptées : "type/sous-type", "type/*", "*/*", "*")',
'(formes acceptées : "type/sous-type", "type/*", "*/*", "*")',
);
}
}
@ -231,7 +237,7 @@ function parseSessionKey(value: unknown): Buffer {
if (key.length !== SESSION_KEY_BYTES) {
throw new ConfigError(
`session.key doit être ${String(SESSION_KEY_BYTES)} octets encodés en base64 ` +
`(décodé : ${String(key.length)} octets). Générer avec : openssl rand -base64 32`,
`(décodé : ${String(key.length)} octets). Générer avec : openssl rand -base64 32`,
);
}
return key;
@ -257,7 +263,7 @@ function parseSession(value: unknown): SessionConfig {
key: parseSessionKey(raw.key),
maxAgeSeconds: Math.round(
optionalPositiveNumber(raw.maxAgeHours, DEFAULTS.sessionMaxAgeHours, 'session.maxAgeHours') *
3600,
3600,
),
};
}
@ -386,6 +392,7 @@ function parseTargets(value: unknown, defaultMimePolicy: MimePolicy): DropTarget
raw.allowedMimeTypes === undefined || raw.allowedMimeTypes === null
? defaultMimePolicy
: parseMimePolicy(raw.allowedMimeTypes, `targets[${String(index)}].allowedMimeTypes`),
permission: optionalString(raw.label, `targets[${String(index)}].permission`) ?? "0o666"
};
};