fix: AP S2S handling for /user/:userslug route

This commit is contained in:
Julian Lam
2024-03-12 10:41:10 -04:00
parent ba3eae7a64
commit 9cd6b496ba
2 changed files with 6 additions and 3 deletions

View File

@@ -17,6 +17,7 @@ const posts = require('../posts');
const messaging = require('../messaging'); const messaging = require('../messaging');
const flags = require('../flags'); const flags = require('../flags');
const slugify = require('../slugify'); const slugify = require('../slugify');
const utils = require('../utils');
const activitypub = require('../activitypub'); const activitypub = require('../activitypub');
const helpers = require('./helpers'); const helpers = require('./helpers');
@@ -25,9 +26,11 @@ const controllerHelpers = require('../controllers/helpers');
const Assert = module.exports; const Assert = module.exports;
Assert.user = helpers.try(async (req, res, next) => { Assert.user = helpers.try(async (req, res, next) => {
const uid = req.params.uid || res.locals.uid;
if ( if (
(isFinite(req.params.uid) && await user.exists(req.params.uid)) || (utils.isNumber(uid) && await user.exists(uid)) ||
(req.params.uid.indexOf('@') !== -1 && await activitypub.helpers.query(req.params.uid)) (uid.indexOf('@') !== -1 && await activitypub.helpers.query(uid))
) { ) {
return next(); return next();
} }

View File

@@ -21,7 +21,7 @@ module.exports = function (app, middleware, controllers) {
app.post('/inbox', [...middlewares, middleware.activitypub.validate], controllers.activitypub.postInbox); app.post('/inbox', [...middlewares, middleware.activitypub.validate], controllers.activitypub.postInbox);
app.get('/uid/:uid', [...middlewares, middleware.assert.user], controllers.activitypub.actors.user); app.get('/uid/:uid', [...middlewares, middleware.assert.user], controllers.activitypub.actors.user);
app.get('/user/:userslug', [...middlewares, middleware.assert.user, middleware.exposeUid], controllers.activitypub.actors.userBySlug); app.get('/user/:userslug', [...middlewares, middleware.exposeUid, middleware.assert.user], controllers.activitypub.actors.userBySlug);
app.get('/uid/:uid/inbox', [...middlewares, middleware.assert.user], controllers.activitypub.getInbox); app.get('/uid/:uid/inbox', [...middlewares, middleware.assert.user], controllers.activitypub.getInbox);
app.post('/uid/:uid/inbox', [...middlewares, middleware.assert.user, middleware.activitypub.validate], controllers.activitypub.postInbox); app.post('/uid/:uid/inbox', [...middlewares, middleware.assert.user, middleware.activitypub.validate], controllers.activitypub.postInbox);
app.get('/uid/:uid/outbox', [...middlewares, middleware.assert.user], controllers.activitypub.getOutbox); app.get('/uid/:uid/outbox', [...middlewares, middleware.assert.user], controllers.activitypub.getOutbox);