diff --git a/src/activitypub/index.js b/src/activitypub/index.js index 7bac91ff48..b9b0a60279 100644 --- a/src/activitypub/index.js +++ b/src/activitypub/index.js @@ -6,12 +6,13 @@ const winston = require('winston'); const request = require('request-promise-native'); const db = require('../database'); -const helpers = require('./helpers'); const ActivityPub = module.exports; +ActivityPub.helpers = require('./helpers'); + ActivityPub.getActor = async (id) => { - const { hostname, actorUri: uri } = await helpers.query(id); + const { hostname, actorUri: uri } = await ActivityPub.helpers.query(id); if (!uri) { return false; } diff --git a/src/controllers/accounts/profile.js b/src/controllers/accounts/profile.js index 909066da18..d97261ee1e 100644 --- a/src/controllers/accounts/profile.js +++ b/src/controllers/accounts/profile.js @@ -76,7 +76,7 @@ profileController.getFederated = async function (req, res, next) { const payload = { uid, username: `${preferredUsername}@${hostname}`, - userslug: slugify(`${preferredUsername}@${hostname}`), + userslug: `${preferredUsername}@${hostname}`, fullname: name, joindate: new Date(published).getTime(), picture: typeof icon === 'string' ? icon : icon.url, diff --git a/src/middleware/assert.js b/src/middleware/assert.js index 6c0f5ef72f..ccbc007275 100644 --- a/src/middleware/assert.js +++ b/src/middleware/assert.js @@ -17,6 +17,7 @@ const posts = require('../posts'); const messaging = require('../messaging'); const flags = require('../flags'); const slugify = require('../slugify'); +const activitypub = require('../activitypub'); const helpers = require('./helpers'); const controllerHelpers = require('../controllers/helpers'); @@ -24,11 +25,14 @@ const controllerHelpers = require('../controllers/helpers'); const Assert = module.exports; Assert.user = helpers.try(async (req, res, next) => { - if (!await user.exists(req.params.uid)) { - return controllerHelpers.formatApiResponse(404, res, new Error('[[error:no-user]]')); + if ( + (isFinite(req.params.uid) && await user.exists(req.params.uid)) || + (req.params.uid.indexOf('@') !== -1 && await activitypub.helpers.query(req.params.uid)) + ) { + return next(); } - next(); + controllerHelpers.formatApiResponse(404, res, new Error('[[error:no-user]]')); }); Assert.group = helpers.try(async (req, res, next) => {