Reimplement well-known WebFinger to support multiple aliases and specify profile-page
This commit is contained in:
parent
a22f8a352b
commit
d775e56c35
|
@ -0,0 +1,11 @@
|
|||
global.replaceImpl = (funcs, name, withFunc) => {
|
||||
for (var i = 0; i < funcs.length; i++)
|
||||
if (funcs[i].name === name)
|
||||
funcs[i] = withFunc
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
rewriteImplementations: () => {
|
||||
require('./well-known.js').init()
|
||||
},
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
module.exports = {
|
||||
init: () => {
|
||||
replaceImpl(apex.net.webfinger.get, 'respondWebfinger', (req, res, next) => {
|
||||
const resource = req.query.resource
|
||||
const actorObj = res.locals.apex.target
|
||||
if (!actorObj) {
|
||||
return res.status(404).send(`${resource} not found`)
|
||||
}
|
||||
const profilePage = `https://${apex.domain}/@${actorObj.preferredUsername[0]}`
|
||||
return res.json({
|
||||
subject: resource,
|
||||
aliases: [ profilePage, actorObj.id ],
|
||||
links: [
|
||||
{
|
||||
rel: 'http://webfinger.net/rel/profile-page',
|
||||
type: 'text/html',
|
||||
href: profilePage
|
||||
},
|
||||
{
|
||||
rel: 'self',
|
||||
type: 'application/activity+json',
|
||||
href: actorObj.id
|
||||
}
|
||||
]
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
const express = require('express')
|
||||
const ActivitypubExpress = require('activitypub-express')
|
||||
const activity = require('./activity/index.js')
|
||||
|
||||
const port = 8080
|
||||
const app = express()
|
||||
|
@ -43,6 +44,7 @@ app.use(require('cookie-parser')())
|
|||
app.use(bodyParser.urlencoded({ extended: true }))
|
||||
|
||||
// define routes using prepacakged middleware collections
|
||||
activity.rewriteImplementations()
|
||||
app.route(routes.inbox)
|
||||
.get(apex.net.inbox.get)
|
||||
.post(apex.net.inbox.post)
|
||||
|
|
Loading…
Reference in New Issue