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
|
// 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)));
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user