From dbcd627815b61e48df92223cc35b12ddacc771c6 Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Wed, 17 Apr 2024 20:57:44 -0400 Subject: [PATCH] Apply various small fixes --- .../filesystem/hl_operations/hl_readdir.js | 2 +- .../filesystem/ll_operations/ll_readdir.js | 34 ++++++------------- packages/backend/src/helpers.js | 2 +- .../src/routers/filesystem_api/readdir.js | 1 + .../backend/src/services/SessionService.js | 5 +++ 5 files changed, 18 insertions(+), 26 deletions(-) diff --git a/packages/backend/src/filesystem/hl_operations/hl_readdir.js b/packages/backend/src/filesystem/hl_operations/hl_readdir.js index 3c5287a2..1182ce3c 100644 --- a/packages/backend/src/filesystem/hl_operations/hl_readdir.js +++ b/packages/backend/src/filesystem/hl_operations/hl_readdir.js @@ -24,7 +24,7 @@ const { HLFilesystemOperation } = require("./definitions"); class HLReadDir extends HLFilesystemOperation { async _run () { - const { subject, user, no_thumbs, no_assocs } = this.values; + const { subject, user, no_thumbs, no_assocs, actor } = this.values; if ( ! await subject.exists() ) { throw APIError.create('subject_does_not_exist'); diff --git a/packages/backend/src/filesystem/ll_operations/ll_readdir.js b/packages/backend/src/filesystem/ll_operations/ll_readdir.js index 8d4303f1..545460a2 100644 --- a/packages/backend/src/filesystem/ll_operations/ll_readdir.js +++ b/packages/backend/src/filesystem/ll_operations/ll_readdir.js @@ -17,9 +17,8 @@ * along with this program. If not, see . */ const APIError = require("../../api/APIError"); -const { chkperm, get_descendants } = require("../../helpers"); -const { TYPE_DIRECTORY } = require("../FSNodeContext"); -const { NodeUIDSelector, NodeRawEntrySelector } = require("../node/selectors"); +const { RootNodeSelector } = require("../node/selectors"); +const { NodeUIDSelector, NodeChildSelector } = require("../node/selectors"); const { LLFilesystemOperation } = require("./definitions"); class LLReadDir extends LLFilesystemOperation { @@ -42,27 +41,14 @@ class LLReadDir extends LLFilesystemOperation { const svc_fsentry = svc.get('fsEntryService'); const svc_fs = svc.get('filesystem'); - if ( - subject.isRoot || - (await subject.isUserDirectory() && subject.name !== user.username) - ) { - this.checkpoint('before call to get_descendants') - const entries = await get_descendants( - await subject.get('path'), - user, - 1, true, - ) - this.checkpoint('after call to get_descendants') - - const children = await Promise.all(entries.map(async entry => { - const node = await svc_fs.node(new NodeRawEntrySelector(entry)); - node.found_thumbnail = false; - return node; - })) - - this.checkpoint('after get children (2)'); - - return children; + if ( subject.isRoot ) { + if ( ! actor.type.user ) return []; + return [ + await svc_fs.node(new NodeChildSelector( + new RootNodeSelector(), + actor.type.user.username, + )) + ]; } this.checkpoint('before get direct descendants') diff --git a/packages/backend/src/helpers.js b/packages/backend/src/helpers.js index d757abb0..771720fa 100644 --- a/packages/backend/src/helpers.js +++ b/packages/backend/src/helpers.js @@ -1147,7 +1147,7 @@ async function jwt_auth(req){ else if(req.handshake && req.handshake.query && req.handshake.query.auth_token) token = req.handshake.query.auth_token; - if(!token) + if(!token || token === 'null') throw('No auth token found'); else if (typeof token !== 'string') throw('token must be a string.') diff --git a/packages/backend/src/routers/filesystem_api/readdir.js b/packages/backend/src/routers/filesystem_api/readdir.js index f8724a53..cc1280fd 100644 --- a/packages/backend/src/routers/filesystem_api/readdir.js +++ b/packages/backend/src/routers/filesystem_api/readdir.js @@ -98,6 +98,7 @@ module.exports = eggspress('/readdir', { no_thumbs, no_assocs, user: req.user, + actor: req.actor, }); // check for duplicate names diff --git a/packages/backend/src/services/SessionService.js b/packages/backend/src/services/SessionService.js index a8b0dbc4..2fb5d61d 100644 --- a/packages/backend/src/services/SessionService.js +++ b/packages/backend/src/services/SessionService.js @@ -1,3 +1,4 @@ +const { invalidate_cached_user } = require("../helpers"); const { asyncSafeSetInterval } = require("../util/promise"); const { MINUTE, SECOND } = require("../util/time"); const BaseService = require("./BaseService"); @@ -152,6 +153,10 @@ class SessionService extends BaseService { 'WHERE `id` = ? LIMIT 1', [sql_ts, user_id], ); + const user = kv.get('users:id:' + user_id); + if ( user ) { + user.last_activity_ts = sql_ts; + } } } }