fix: inability to retrieve previously-unknown remote users via url manipulation

This commit is contained in:
Julian Lam
2024-03-07 15:39:42 -05:00
parent 81b81e540a
commit 28f38b2687
2 changed files with 13 additions and 1 deletions

View File

@@ -19,6 +19,16 @@ Actors.assert = async (ids, options = {}) => {
// Filter out uids if passed in // Filter out uids if passed in
ids = ids.filter(id => !utils.isNumber(id)); ids = ids.filter(id => !utils.isNumber(id));
// Translate webfinger handles to uris
ids = await Promise.all(ids.map(async (id) => {
if (id.includes('@')) {
({ actorUri: id } = await activitypub.helpers.query(id));
}
return id;
}));
// Filter out existing // Filter out existing
if (!options.update) { if (!options.update) {
const exists = await db.isSortedSetMembers('usersRemote:lastCrawled', ids.map(id => ((typeof id === 'object' && id.hasOwnProperty('id')) ? id.id : id))); const exists = await db.isSortedSetMembers('usersRemote:lastCrawled', ids.map(id => ((typeof id === 'object' && id.hasOwnProperty('id')) ? id.id : id)));

View File

@@ -8,6 +8,7 @@ const db = require('../database');
const privileges = require('../privileges'); const privileges = require('../privileges');
const categories = require('../categories'); const categories = require('../categories');
const meta = require('../meta'); const meta = require('../meta');
const activitypub = require('../activitypub');
const utils = require('../utils'); const utils = require('../utils');
const User = module.exports; const User = module.exports;
@@ -111,7 +112,8 @@ User.getUidByUserslug = async function (userslug) {
} }
if (userslug.includes('@')) { if (userslug.includes('@')) {
return (await db.getObjectField('handle:uid', userslug)) || 0; await activitypub.actors.assert(userslug);
return (await db.getObjectField('handle:uid', userslug)) || null;
} }
return await db.sortedSetScore('userslug:uid', userslug); return await db.sortedSetScore('userslug:uid', userslug);