@auth/hasura-adapter
Official Hasura adapter for Auth.js / NextAuth.js.
Installation
npm install @auth/hasura-adapterformat
const format: {
from: B extends true ? T : null | T;
to: T;
};Type declaration
from()
Type parameters
| Type parameter | Value |
|---|---|
T | - |
B extends boolean | false |
Parameters
| Parameter | Type |
|---|---|
object? | null | Record<string, any> |
throwIfNullish? | B |
Returns
B extends true ? T : null | T
to()
Type parameters
| Type parameter |
|---|
T |
Parameters
| Parameter | Type |
|---|---|
object | Record<string, any> |
Returns
T
HasuraAdapter()
HasuraAdapter(client): AdapterSetup
- 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;- Add the adapter to your
pages/api/[...nextauth].tsnext-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
| Parameter | Type |
|---|---|
client | HasuraAdapterClient |