mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
fix: inability to retrieve previously-unknown remote users via url manipulation
This commit is contained in:
@@ -19,6 +19,16 @@ Actors.assert = async (ids, options = {}) => {
|
||||
// Filter out uids if passed in
|
||||
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
|
||||
if (!options.update) {
|
||||
const exists = await db.isSortedSetMembers('usersRemote:lastCrawled', ids.map(id => ((typeof id === 'object' && id.hasOwnProperty('id')) ? id.id : id)));
|
||||
|
||||
@@ -8,6 +8,7 @@ const db = require('../database');
|
||||
const privileges = require('../privileges');
|
||||
const categories = require('../categories');
|
||||
const meta = require('../meta');
|
||||
const activitypub = require('../activitypub');
|
||||
const utils = require('../utils');
|
||||
|
||||
const User = module.exports;
|
||||
@@ -111,7 +112,8 @@ User.getUidByUserslug = async function (userslug) {
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user