grant_type nostr -> nostr_bunker, connections -> nip46_tokens

This commit is contained in:
Alex Gleason 2024-05-29 16:14:21 -05:00
parent a617e32d65
commit 7221b5f203
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
4 changed files with 9 additions and 9 deletions

View File

@ -25,7 +25,7 @@ const credentialsGrantSchema = z.object({
}); });
const nostrGrantSchema = z.object({ const nostrGrantSchema = z.object({
grant_type: z.literal('nostr'), grant_type: z.literal('nostr_bunker'),
pubkey: n.id(), pubkey: n.id(),
relays: z.string().url().array().optional(), relays: z.string().url().array().optional(),
secret: z.string().optional(), secret: z.string().optional(),
@ -47,7 +47,7 @@ const createTokenController: AppController = async (c) => {
} }
switch (result.data.grant_type) { switch (result.data.grant_type) {
case 'nostr': case 'nostr_bunker':
return c.json({ return c.json({
access_token: await getToken(result.data), access_token: await getToken(result.data),
token_type: 'Bearer', token_type: 'Bearer',
@ -90,13 +90,13 @@ async function getToken(
const signer = new NConnectSigner({ const signer = new NConnectSigner({
pubkey, pubkey,
signer: new NSecSigner(serverSeckey), signer: new NSecSigner(serverSeckey),
relay: await Storages.pubsub(), relay: await Storages.pubsub(), // TODO: Use the relays from the request.
timeout: 60_000, timeout: 60_000,
}); });
await signer.connect(secret); await signer.connect(secret);
await kysely.insertInto('connections').values({ await kysely.insertInto('nip46_tokens').values({
api_token: token, api_token: token,
user_pubkey: pubkey, user_pubkey: pubkey,
server_seckey: serverSeckey, server_seckey: serverSeckey,

View File

@ -2,7 +2,7 @@ export interface DittoTables {
nostr_events: EventRow; nostr_events: EventRow;
nostr_tags: TagRow; nostr_tags: TagRow;
nostr_fts5: EventFTSRow; nostr_fts5: EventFTSRow;
connections: ConnectionRow; nip46_tokens: NIP46TokenRow;
unattached_media: UnattachedMediaRow; unattached_media: UnattachedMediaRow;
author_stats: AuthorStatsRow; author_stats: AuthorStatsRow;
event_stats: EventStatsRow; event_stats: EventStatsRow;
@ -45,7 +45,7 @@ interface TagRow {
value: string; value: string;
} }
interface ConnectionRow { interface NIP46TokenRow {
api_token: string; api_token: string;
user_pubkey: string; user_pubkey: string;
server_seckey: Uint8Array; server_seckey: Uint8Array;

View File

@ -2,7 +2,7 @@ import { Kysely, sql } from 'kysely';
export async function up(db: Kysely<any>): Promise<void> { export async function up(db: Kysely<any>): Promise<void> {
await db.schema await db.schema
.createTable('connections') .createTable('nip46_tokens')
.addColumn('api_token', 'text', (col) => col.primaryKey().unique().notNull()) .addColumn('api_token', 'text', (col) => col.primaryKey().unique().notNull())
.addColumn('user_pubkey', 'text', (col) => col.notNull()) .addColumn('user_pubkey', 'text', (col) => col.notNull())
.addColumn('server_seckey', 'bytea', (col) => col.notNull()) .addColumn('server_seckey', 'bytea', (col) => col.notNull())
@ -13,5 +13,5 @@ export async function up(db: Kysely<any>): Promise<void> {
} }
export async function down(db: Kysely<any>): Promise<void> { export async function down(db: Kysely<any>): Promise<void> {
await db.schema.dropTable('connections').execute(); await db.schema.dropTable('nip46_tokens').execute();
} }

View File

@ -23,7 +23,7 @@ export const signerMiddleware: AppMiddleware = async (c, next) => {
const kysely = await DittoDB.getInstance(); const kysely = await DittoDB.getInstance();
const { user_pubkey, server_seckey, relays } = await kysely const { user_pubkey, server_seckey, relays } = await kysely
.selectFrom('connections') .selectFrom('nip46_tokens')
.select(['user_pubkey', 'server_seckey', 'relays']) .select(['user_pubkey', 'server_seckey', 'relays'])
.where('api_token', '=', bech32) .where('api_token', '=', bech32)
.executeTakeFirstOrThrow(); .executeTakeFirstOrThrow();