UNPKG

@xsprtd/nuxt-api

Version:

Nuxt API Authentication and Http Client

71 lines (68 loc) 2.01 kB
import { defineNuxtModule, createResolver, addPlugin, addImportsDir, addRouteMiddleware } from '@nuxt/kit'; import defu from 'defu'; import { MODULE_NAME, MODULE_CONFIG_KEY } from '../dist/runtime/helpers/config.js'; const module = defineNuxtModule({ meta: { name: MODULE_NAME, configKey: MODULE_CONFIG_KEY }, defaults: { apiBaseURL: process.env.API_BASE_URL, authMode: "cookie", userStateKey: "user", token: { storageKey: "AUTH_TOKEN", storageType: "cookie", responseKey: "token" }, fetchOptions: { retryAttempts: false }, csrf: { cookieName: "XSRF-TOKEN", headerName: "X-XSRF-TOKEN" }, endpoints: { csrf: "/sanctum/csrf-cookie", login: "/api/login", logout: "/api/logout", user: "/api/user" }, redirect: { intendedEnabled: false, login: "/login", postLogin: "/dashboard", postLogout: "/login" }, middlewareNames: { auth: "auth", guest: "guest" }, errorMessages: { default: "Whoops - something went wrong", csrf: "CSRF token mismatch", unauthenticated: "Unauthenticated" } }, async setup(options, nuxt) { const resolver = createResolver(import.meta.url); const runtimeDir = resolver.resolve("./runtime"); nuxt.options.build.transpile.push(runtimeDir); const moduleOptions = defu( nuxt.options.runtimeConfig.public[MODULE_CONFIG_KEY] || {}, options ); nuxt.options.runtimeConfig.public[MODULE_CONFIG_KEY] = moduleOptions; addPlugin(resolver.resolve("./runtime/plugin")); addImportsDir(resolver.resolve("./runtime/composables")); addRouteMiddleware({ name: moduleOptions.middlewareNames.auth, path: resolver.resolve("./runtime/middleware/auth.custom") }); addRouteMiddleware({ name: moduleOptions.middlewareNames.guest, path: resolver.resolve("./runtime/middleware/guest.custom") }); } }); export { module as default };