JSPM

  • Created
  • Published
  • Downloads 13
  • Score
    100M100P100Q77903F
  • License MIT

Package Exports

  • based-auth/actions
  • based-auth/chains
  • based-auth/index.css
  • based-auth/networks
  • based-auth/react
  • based-auth/utils

Readme

Note: This package is for server-side (API, server actions, backend) use only. There are no frontend (React) components or hooks exported. Do not import this package in client-side code.

based-auth (actions)

A Next.js/Node.js authentication and wallet API kit for Ethereum and Solana, with utilities for serialization and contract interaction, designed for serverless and API route usage.


Features

  • NextAuth-based multi-provider authentication (Google, GitHub, Twitter, EVM/Solana wallet)
  • Social and wallet login support
  • Secure server-side contract interaction endpoints (EVM/Solana)
  • Serialization/deserialization helpers for cross-network data
  • User profile management and keypair generation
  • All API endpoints and helpers are SSR/serverless-friendly

Installation

yarn add based-auth

Peer dependencies:

  • next-auth
  • ethers
  • @solana/web3.js
  • @coral-xyz/anchor
  • tweetnacl
  • bip39
  • shortid
  • based-shared (if using shared types)

Usage

1. API Route Handlers

You can use the provided handlers in your Next.js API routes or server actions.

// pages/api/auth/[...nextauth].ts
import { handlers } from "based-auth/actions";
export default handlers;

Or for app directory:

// app/api/auth/[...nextauth]/route.ts
import { handlers } from "based-auth/actions";
export const { GET, POST } = handlers;

2. Auth Helpers

You can use the exported helpers for authentication and session management:

import { auth, signIn, signOut } from "based-auth/actions";

// Usage in server actions or API routes
const session = await auth();
await signIn(/* ... */);
await signOut(/* ... */);

3. Web3 Handler

For server-side contract interaction (social wallet, EVM, Solana):

import { basedAuthHandler } from "based-auth/actions";

// In your API route:
export const POST = basedAuthHandler;
  • Supports operations: "transfer", "write-contract" (see source for details)
  • Only available to authenticated users with a social profile

4. Serialization Utilities

For encoding/decoding cross-network data:

import { serialize, deserialize } from "based-auth/actions";

const encoded = serialize({ value: 123n });
const decoded = deserialize(encoded, "eth"); // or "sol"

Environment Variables

Set the following in your .env:

AUTH_GOOGLE_ID=...
AUTH_GOOGLE_SECRET=...
AUTH_GITHUB_ID=...
AUTH_GITHUB_SECRET=...
AUTH_TWITTER_ID=...
AUTH_TWITTER_SECRET=...
AUTH_SECRET=...
PREFIX_HASH=your_secret_for_keypair_generation

API

Exports

  • handlers – NextAuth API route handlers (for Next.js API/app routes)
  • auth – Helper to get the current session (async)
  • signIn – Helper to sign in a user (async)
  • signOut – Helper to sign out a user (async)
  • basedAuthHandler – POST handler for server-side web3 operations (transfer, write-contract)
  • serialize – Serialize cross-network data (bigint, BN, SolanaPublicKey)
  • deserialize – Deserialize cross-network data

Advanced/Utility (internal, but useful for extension)

  • saveSocialUser, saveWalletUser, updateOrCreateUserProfile (user profile management)
  • createKeypairs (deterministic keypair generation for EVM/Solana/Sui)

Example: Next.js API Route

// app/api/auth/[...nextauth]/route.ts
import { handlers } from "based-auth/actions";
export const { GET, POST } = handlers;

Example: Server-side Web3

// app/api/web3/route.ts
import { basedAuthHandler } from "based-auth/actions";
export const POST = basedAuthHandler;

Notes

  • This package is server-only: do not use in client/browser code.
  • All web3 operations are protected and require authentication.
  • Serialization utilities are provided for safe cross-network data handling.
  • User profile and keypair helpers are available for advanced use.

For more details, see the source code in src/actions/utils/.