Skip to content
Migrating from NextAuth.js v4? Read our migration guide.
API reference
@auth/hasura-adapter

@auth/hasura-adapter

Official Hasura adapter for Auth.js / NextAuth.js.

Installation

npm install @auth/hasura-adapter

format

const format: {
  from: B extends true ? T : null | T;
  to: T;
};

Type declaration

from()

Type parameters
Type parameterValue
T-
B extends booleanfalse
Parameters
ParameterType
object?null | Record<string, any>
throwIfNullish?B
Returns

B extends true ? T : null | T

to()

Type parameters
Type parameter
T
Parameters
ParameterType
objectRecord<string, any>
Returns

T


HasuraAdapter()

HasuraAdapter(client): Adapter

Setup

  1. Create the Auth.js schema in your database using SQL.
CREATE TABLE accounts (
    id uuid DEFAULT gen_random_uuid() NOT NULL,
    type text NOT NULL,
    provider text NOT NULL,
    "providerAccountId" text NOT NULL,
    refresh_token text,
    access_token text,
    expires_at integer,
    token_type text,
    scope text,
    id_token text,
    session_state text,
    "userId" uuid NOT NULL
);
 
CREATE TABLE sessions (
    id uuid DEFAULT gen_random_uuid() NOT NULL,
    "sessionToken" text NOT NULL,
    "userId" uuid NOT NULL,
    expires timestamptz NOT NULL
);
 
CREATE TABLE users (
    id uuid DEFAULT gen_random_uuid() NOT NULL,
    name text,
    email text NOT NULL,
    "emailVerified" timestamptz,
    image text
);
 
CREATE TABLE verification_tokens (
    token text NOT NULL,
    identifier text NOT NULL,
    expires timestamptz NOT NULL
);
 
CREATE TABLE provider_type (
    value text NOT NULL
);
 
ALTER TABLE ONLY accounts
    ADD CONSTRAINT accounts_pkey PRIMARY KEY (id);
 
ALTER TABLE ONLY sessions
    ADD CONSTRAINT sessions_pkey PRIMARY KEY ("sessionToken");
 
ALTER TABLE ONLY users
    ADD CONSTRAINT users_email_key UNIQUE (email);
 
ALTER TABLE ONLY users
    ADD CONSTRAINT users_pkey PRIMARY KEY (id);
 
ALTER TABLE ONLY verification_tokens
    ADD CONSTRAINT verification_tokens_pkey PRIMARY KEY (token);
 
ALTER TABLE ONLY provider_type
    ADD CONSTRAINT provider_type_pkey PRIMARY KEY (value);
 
ALTER TABLE ONLY accounts
    ADD CONSTRAINT "accounts_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE RESTRICT ON DELETE CASCADE;
 
ALTER TABLE ONLY sessions
    ADD CONSTRAINT "sessions_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE RESTRICT ON DELETE CASCADE;
 
INSERT INTO provider_type (value) VALUES ('credentials'), ('email'), ('oauth'), ('oidc');
 
ALTER TABLE ONLY accounts
    ADD CONSTRAINT "accounts_type_fkey" FOREIGN KEY ("type") REFERENCES public.provider_type(value) ON UPDATE RESTRICT ON DELETE RESTRICT;
  1. Add the adapter to your pages/api/[...nextauth].ts next-auth configuration object.
pages/api/auth/[...nextauth].js
import NextAuth from "next-auth"
import { HasuraAdapter } from "@auth/hasura-adapter"
 
export default NextAuth({
  adapter: HasuraAdapter({
    endpoint: "<Hasura-GraphQL-endpoint>",
    adminSecret: "<admin-secret>",
  }),
})

Parameters

ParameterType
clientHasuraAdapterClient

Returns

Adapter

Auth.js © Balázs Orbán and Team - 2024