nostr-dm-magiclink-utils
Version:
A comprehensive Nostr utility library for magic link authentication via direct messages, supporting both ESM and CommonJS. Features NIP-01/04 compliant message encryption, multi-relay support, internationalization (i18n) with RTL support, and TypeScript-f
45 lines (35 loc) • 1.19 kB
text/typescript
import express from 'express';
import { createNostrMagicLink, NostrMagicLinkRequest } from '../src';
const app = express();
app.use(express.json());
// Initialize the magic link middleware
const magicLink = createNostrMagicLink({
privateKey: process.env.NOSTR_PRIVATE_KEY || '',
baseUrl: process.env.BASE_URL || 'http://localhost:3000/auth',
relayUrl: process.env.RELAY_URL || 'wss://relay.damus.io'
});
// Login endpoint - initiates magic link flow
app.post('/auth/login', magicLink.initiate);
// Verification endpoint - handles magic link callback
app.get('/auth/verify', magicLink.verify, (req: NostrMagicLinkRequest, res) => {
const { npub, sessionId } = req.nostr!;
// In a real app, you would:
// 1. Create a session
// 2. Set cookies/JWT
// 3. Redirect to app
res.json({
success: true,
message: 'Authentication successful',
npub,
sessionId
});
});
// Health check
app.get('/health', (req, res) => {
res.json({ status: 'ok' });
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
console.log(`Magic link verification URL: http://localhost:${PORT}/auth/verify`);
});