stacker.news/api/resolvers/lnurl.js

27 lines
773 B
JavaScript

import { randomBytes } from 'crypto'
import { bech32 } from 'bech32'
export default {
Query: {
lnAuth: async (parent, { k1 }, { models }) => {
return await models.lnAuth.findUnique({ where: { k1 } })
}
},
Mutation: {
createAuth: async (parent, args, { models }) => {
const k1 = randomBytes(32).toString('hex')
return await models.lnAuth.create({ data: { k1 } })
}
},
LnAuth: {
encodedUrl: async (lnAuth, args, { models }) => {
const url = new URL(process.env.LNAUTH_URL)
url.searchParams.set('tag', 'login')
url.searchParams.set('k1', lnAuth.k1)
// bech32 encode url
const words = bech32.toWords(Buffer.from(url.toString(), 'utf8'))
return bech32.encode('lnurl', words, 1023)
}
}
}