From 2656ba853c0fb1f0fc5a42cae1c015c9dcca4a8f Mon Sep 17 00:00:00 2001 From: K Date: Fri, 9 Aug 2024 15:49:39 +0100 Subject: [PATCH] nip05: use nostr-tools to convert npub to hex #2692 --- .../core/server/routes/core.server.routes.js | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/modules/core/server/routes/core.server.routes.js b/modules/core/server/routes/core.server.routes.js index 4d7827f33a..3847aa7394 100644 --- a/modules/core/server/routes/core.server.routes.js +++ b/modules/core/server/routes/core.server.routes.js @@ -4,6 +4,7 @@ const _ = require('lodash'); const core = require('../controllers/core.server.controller'); const tribes = require('../../../tribes/server/controllers/tribes.server.controller'); +const nip19 = require('nostr-tools/nip19'); module.exports = function (app) { const redirect = function (src, dst) { @@ -54,33 +55,36 @@ module.exports = function (app) { // Object is passed to layout at `core.renderIndex()` app.route('/circles/:tribe').get(core.renderIndex); - app.route('/.well-known/nostr.json').get(function(req, res) { + app.route('/.well-known/nostr.json').get(function (req, res) { // NIP05 work in progress, https://github.com/Trustroots/trustroots/issues/2692 const mongoose = require('mongoose'); const User = mongoose.model('User'); - + const name = req.query.name; - - User.findOne({ username: name }, function(err, user) { + + User.findOne({ username: name }, function (err, user) { if (err) { res.status(500).send({ error: 'Internal server error' }); } else if (!user) { res.status(404).send({ error: 'User not found' }); } else { - const nostrNpub = user.nostrNpub || 'User does not have a Nostr public key'; - // const npubs = { - // "nostroots": "7e7e9c42a91bfef19fa929e5fda1b72e0ebc1a4c1141673e2794234d86addf4e", - // "thefriendlyhost": "84d17317d46629037291f93df470c28082a874305e41c9465970659e9254edab" - // }; + const nostrNpub = user.nostrNpub; + + if (nostrNpub) { + var result = nip19.decode(nostrNpub); + var hex = result.data; + } else { + // what should we return if there's no npub? + var hex = 'no npub'; + } + res.json({ - "names": { - [name]: nostrNpub // TODO convert npub to hex - } + names: { + [name]: hex, + }, }); - } }); - }); // Define application route