folder-size: require list permissions

Massimo Melina committed Jan 14, 2025 at 23:46 UTC d84c322792686b25a678943c7a650db179bbd1ae
2 files changed +5
src/frontEndApis.ts
+2
@@ -178,6 +178,8 @@ export const frontEndApis: ApiHandlers = {
178 throw new ApiError(HTTP_NOT_FOUND)
179 if (!await nodeIsDirectory(folder))
180 throw new ApiError(HTTP_METHOD_NOT_ALLOWED)
181 + if (statusCodeForMissingPerm(folder, 'can_list', ctx))
182 + return new ApiError(ctx.status)
183 let bytes = 0
184 for await (const n of walkNode(folder, { ctx, onlyFiles: true, depth: Infinity }))
185 bytes += await nodeStats(n).then(x => x?.size || 0, () => 0)
tests/test.ts
+3
@@ -122,6 +122,9 @@ describe('basics', () => {
122 return login('rejetto').then(() => { throw Error('logged in') }, () => 0)
123 .finally(() => defaultBaseUrl = BASE_URL)
124 })
125 +
126 + it('folder size', reqApi('get_folder_size', { uri: 'f1/page' }, res => res.bytes === 6328 ))
127 + it('folder size.cant', reqApi('get_folder_size', { uri: 'for-admins' }, 401))
128 })
129
130 describe('accounts', () => {