Pakiety

NextAuth (Auth.js)

Jak wpiąć Auth.js w łańcuch NEMO, żeby sesja rozwiązana raz była dostępna dla wszystkich kolejnych funkcji bez ponownego odpytywania bazy.

Instalacja

NextAuth podłącz do projektu według oficjalnych przewodników:

Auth.js Quickstart albo przykładowa aplikacja Next.js.

Pomiń w nich rozdział o konfiguracji middleware - tę część zastępują kroki poniżej.

Podmień zawartość pliku middleware

Handler auth z Auth.js wywołujemy w łańcuchu before, a zalogowanego użytkownika przekładamy z jego callbacku do event.storage.

@/proxy.ts
import { auth as authMiddleware } from "@/auth";
import { type MiddlewareConfig, type GlobalMiddlewareConfig, createNEMO } from '@zanreal/nemo';

const globalMiddlewares: GlobalMiddlewareConfig = {
  before: async (request, event) => {
    await authMiddleware((_request, _event) => {
      const { auth } = _request;
      event.storage.set("user", auth?.user);
    })(request, event);
  }
}

const middlewares: MiddlewareConfig = {
  '/': [
    async (request, event) => {
      console.log('There is NEMO', event.storage.get("user"));
    },
  ],
};

export const proxy = createNEMO(middlewares, globalMiddlewares);

export const config = {
  matcher: ['/((?!_next/|_static|_vercel|[\\w-]+\\.\\w+).*)'],
};
@/middleware.ts
import { auth as authMiddleware } from "@/auth";
import { type MiddlewareConfig, type GlobalMiddlewareConfig, createNEMO } from '@zanreal/nemo';

const globalMiddlewares: GlobalMiddlewareConfig = {
  before: async (request, event) => {
    await authMiddleware((_request, _event) => {
      const { auth } = _request;
      event.storage.set("user", auth?.user);
    })(request, event);
  }
}

const middlewares: MiddlewareConfig = {
  '/': [
    async (request, event) => {
      console.log('There is NEMO', event.storage.get("user"));
    },
  ],
};

export const middleware = createNEMO(middlewares, globalMiddlewares);

export const config = {
  matcher: ['/((?!_next/|_static|_vercel|[\\w-]+\\.\\w+).*)'],
};
Od tej pory sięgasz po klucz user w storage tam, gdzie go akurat potrzebujesz. 🎉

Czy ta strona była pomocna?

M↓obsługiwane.

Spis treści