mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-28 09:36:16 +01:00
42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
|
|
'use strict';
|
||
|
|
|
||
|
|
const nconf = require('nconf');
|
||
|
|
|
||
|
|
const user = require('../user');
|
||
|
|
const activitypub = require('../activitypub');
|
||
|
|
|
||
|
|
const Controller = module.exports;
|
||
|
|
|
||
|
|
Controller.getActor = async (req, res) => {
|
||
|
|
// todo: view:users priv gate
|
||
|
|
const { userslug } = req.params;
|
||
|
|
const { uid } = res.locals;
|
||
|
|
const { username, aboutme, picture, 'cover:url': cover } = await user.getUserData(uid);
|
||
|
|
const publicKey = await activitypub.getPublicKey(uid);
|
||
|
|
|
||
|
|
res.status(200).json({
|
||
|
|
'@context': [
|
||
|
|
'https://www.w3.org/ns/activitystreams',
|
||
|
|
'https://w3id.org/security/v1',
|
||
|
|
],
|
||
|
|
id: `${nconf.get('url')}/user/${userslug}`,
|
||
|
|
url: `${nconf.get('url')}/user/${userslug}`,
|
||
|
|
followers: `${nconf.get('url')}/user/${userslug}/followers`,
|
||
|
|
following: `${nconf.get('url')}/user/${userslug}/following`,
|
||
|
|
inbox: `${nconf.get('url')}/user/${userslug}/inbox`,
|
||
|
|
outbox: `${nconf.get('url')}/user/${userslug}/outbox`,
|
||
|
|
|
||
|
|
type: 'Person',
|
||
|
|
preferredUsername: username,
|
||
|
|
summary: aboutme,
|
||
|
|
icon: picture ? `${nconf.get('url')}${picture}` : null,
|
||
|
|
image: cover ? `${nconf.get('url')}${cover}` : null,
|
||
|
|
|
||
|
|
publicKey: {
|
||
|
|
id: `${nconf.get('url')}/user/${userslug}`,
|
||
|
|
owner: `${nconf.get('url')}/user/${userslug}#key`,
|
||
|
|
publicKeyPem: publicKey,
|
||
|
|
},
|
||
|
|
});
|
||
|
|
};
|