@xsprtd/nuxt-api
Version:
Nuxt API Authentication and Http Client
76 lines (73 loc) • 2.17 kB
JavaScript
import { defineNuxtModule, createResolver, addPlugin, addImportsDir, addRouteMiddleware } from '@nuxt/kit';
import defu from 'defu';
import { MODULE_CONFIG_KEY, MODULE_NAME } from '../dist/runtime/helpers/config.js';
const module$1 = defineNuxtModule({
meta: {
name: MODULE_NAME,
configKey: MODULE_CONFIG_KEY
},
defaults: {
apiBaseURL: process.env.API_BASE_URL || "",
authMode: "cookie",
userStateKey: "user",
headers: {},
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: false,
guest: false
},
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"));
if (moduleOptions.middlewareNames.auth !== false) {
addRouteMiddleware({
name: moduleOptions.middlewareNames.auth,
path: resolver.resolve("./runtime/middleware/auth.custom")
});
}
if (moduleOptions.middlewareNames.guest !== false) {
addRouteMiddleware({
name: moduleOptions.middlewareNames.guest,
path: resolver.resolve("./runtime/middleware/guest.custom")
});
}
}
});
export { module$1 as default };