mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 02:55:58 +01:00 
			
		
		
		
	fix: bugs in user searching causing remote lookups to fail
This commit is contained in:
		| @@ -39,7 +39,7 @@ Actors.assert = async (ids, options = {}) => { | ||||
| 	ids = (await Promise.all(ids.map(async (id) => { | ||||
| 		const originalId = id; | ||||
| 		if (activitypub.helpers.isWebfinger(id)) { | ||||
| 			const host = id.split('@')[1]; | ||||
| 			const host = id.replace(/^(acct:|@)/, '').split('@')[1]; | ||||
| 			if (host === nconf.get('url_parsed').host) { // do not assert loopback ids | ||||
| 				return 'loopback'; | ||||
| 			} | ||||
|   | ||||
| @@ -58,10 +58,12 @@ Helpers.query = async (id) => { | ||||
| 	// username@host ids use acct: URI schema | ||||
| 	const uri = isUri ? new URL(id) : new URL(`acct:${id}`); | ||||
| 	// JS doesn't parse anything other than protocol and pathname from acct: URIs, so we need to just split id manually | ||||
| 	const [username, hostname] = isUri ? [uri.pathname || uri.href, uri.host] : id.split('@'); | ||||
| 	let [username, hostname] = isUri ? [uri.pathname || uri.href, uri.host] : id.split('@'); | ||||
| 	if (!username || !hostname) { | ||||
| 		return false; | ||||
| 	} | ||||
| 	username = username.trim(); | ||||
| 	hostname = hostname.trim(); | ||||
|  | ||||
| 	const cached = webfingerCache.get(id); | ||||
| 	if (cached !== undefined) { | ||||
| @@ -159,7 +161,7 @@ Helpers.resolveLocalId = async (input) => { | ||||
| 		return { type: null, id: null }; | ||||
| 	} else if (String(input).indexOf('@') !== -1) { // Webfinger | ||||
| 		input = decodeURIComponent(input); | ||||
| 		const [slug] = input.replace(/^acct:/, '').split('@'); | ||||
| 		const [slug] = input.replace(/^(acct:|@)/, '').split('@'); | ||||
| 		const uid = await user.getUidByUserslug(slug); | ||||
| 		return { type: 'user', id: uid }; | ||||
| 	} | ||||
|   | ||||
| @@ -45,7 +45,7 @@ module.exports = function (User) { | ||||
| 				const handle = activitypub.helpers.isWebfinger(data.query); | ||||
| 				if (handle || activitypub.helpers.isUri(data.query)) { | ||||
| 					const local = await activitypub.helpers.resolveLocalId(data.query); | ||||
| 					if (local.type === 'user') { | ||||
| 					if (local.type === 'user' && utils.isNumber(local.id)) { | ||||
| 						uids = [local.id]; | ||||
| 					} else { | ||||
| 						const assertion = await activitypub.actors.assert([handle || data.query]); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user