27 lines
773 B
JavaScript
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)
|
|
}
|
|
}
|
|
}
|