diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-12-15 00:09:04 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-12-15 00:09:04 +0900 |
| commit | ebceffba1eb3d762fe164a10ee58fc78547a0a27 (patch) | |
| tree | 8000bbb47469f637578ad59677a6d19b037fb846 /src/server/api | |
| parent | :art: (diff) | |
| download | sharkey-ebceffba1eb3d762fe164a10ee58fc78547a0a27.tar.gz sharkey-ebceffba1eb3d762fe164a10ee58fc78547a0a27.tar.bz2 sharkey-ebceffba1eb3d762fe164a10ee58fc78547a0a27.zip | |
Resolve #2165
Diffstat (limited to 'src/server/api')
| -rw-r--r-- | src/server/api/endpoints/admin/drive/files.ts | 10 | ||||
| -rw-r--r-- | src/server/api/endpoints/drive/files/delete.ts | 7 |
2 files changed, 11 insertions, 6 deletions
diff --git a/src/server/api/endpoints/admin/drive/files.ts b/src/server/api/endpoints/admin/drive/files.ts index 2e54270a0f..6fc83f8191 100644 --- a/src/server/api/endpoints/admin/drive/files.ts +++ b/src/server/api/endpoints/admin/drive/files.ts @@ -63,10 +63,12 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { }; } - const q = - ps.origin == 'local' ? { host: null } : - ps.origin == 'remote' ? { host: { $ne: null } } : - {}; + const q = { + 'metadata.deletedAt': { $exists: false }, + } as any; + + if (ps.origin == 'local') q['metadata._user.host'] = null; + if (ps.origin == 'remote') q['metadata._user.host'] = { $ne: null }; const files = await File .find(q, { diff --git a/src/server/api/endpoints/drive/files/delete.ts b/src/server/api/endpoints/drive/files/delete.ts index 7367c8fbb6..0c2799c708 100644 --- a/src/server/api/endpoints/drive/files/delete.ts +++ b/src/server/api/endpoints/drive/files/delete.ts @@ -32,14 +32,17 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => { // Fetch file const file = await DriveFile .findOne({ - _id: ps.fileId, - 'metadata.userId': user._id + _id: ps.fileId }); if (file === null) { return rej('file-not-found'); } + if (!user.isAdmin && !user.isModerator && !file.metadata.userId.equals(user._id)) { + return rej('access denied'); + } + // Delete await del(file); |