From 73c366ead133e7f2393619653b7b9f378da0340a Mon Sep 17 00:00:00 2001 From: Jan-Henrik Damaschke Date: Thu, 19 Sep 2024 07:06:04 +0200 Subject: [PATCH] refactor(routing): :recycle: Optimized redirect handling --- playground/package.json | 2 +- pnpm-lock.yaml | 27 ++------------------------- src/module.ts | 22 ++++++++++++---------- 3 files changed, 15 insertions(+), 36 deletions(-) diff --git a/playground/package.json b/playground/package.json index ad6b85d..4522a79 100644 --- a/playground/package.json +++ b/playground/package.json @@ -17,6 +17,6 @@ "@iconify-json/simple-icons": "^1.2.3", "@nuxtjs/color-mode": "^3.5.1", "@unocss/nuxt": "^0.62.4", - "nuxt-oidc-auth": "^0.13.0" + "nuxt-oidc-auth": "workspace:^" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f88c70f..3e9fc28 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -115,8 +115,8 @@ importers: specifier: ^0.62.4 version: 0.62.4(magicast@0.3.5)(postcss@8.4.47)(rollup@4.21.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(webpack-sources@3.2.3)(webpack@5.94.0(esbuild@0.23.1)) nuxt-oidc-auth: - specifier: ^0.13.0 - version: 0.13.0(magicast@0.3.5)(rollup@4.21.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(webpack-sources@3.2.3) + specifier: workspace:^ + version: link:.. packages: @@ -3711,9 +3711,6 @@ packages: engines: {node: ^16.10.0 || >=18.0.0} hasBin: true - nuxt-oidc-auth@0.13.0: - resolution: {integrity: sha512-aK8f5bmMpTVIZd7jLsv8ofOHNmKuQ3cyOIej9ppcWhlzjSOSrbnc0QifFEbU7a/I7kECKjjAa1CX1lDEiJa2VA==} - nuxt@3.13.2: resolution: {integrity: sha512-Bjc2qRsipfBhjXsBEJCN+EUAukhdgFv/KoIR5HFB2hZOYRSqXBod3oWQs78k3ja1nlIhAEdBG533898KJxUtJw==} engines: {node: ^14.18.0 || >=16.10.0} @@ -9687,26 +9684,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - nuxt-oidc-auth@0.13.0(magicast@0.3.5)(rollup@4.21.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(webpack-sources@3.2.3): - dependencies: - '@nuxt/devtools-kit': 1.4.2(magicast@0.3.5)(rollup@4.21.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(webpack-sources@3.2.3) - consola: 3.2.3 - defu: 6.1.4 - h3: 1.12.0 - jose: 5.9.2 - ofetch: 1.3.4 - scule: 1.3.0 - sirv: 2.0.4 - ufo: 1.5.4 - uncrypto: 0.1.3 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - uWebSockets.js - - vite - - webpack-sources - nuxt@3.13.2(@parcel/watcher@2.4.1)(@types/node@22.5.5)(encoding@0.1.13)(eslint@9.10.0(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.4)(terser@5.33.0)(typescript@5.6.2)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.6(typescript@5.6.2))(webpack-sources@3.2.3): dependencies: '@nuxt/devalue': 2.0.2 diff --git a/src/module.ts b/src/module.ts index 2168e65..ff26576 100644 --- a/src/module.ts +++ b/src/module.ts @@ -2,7 +2,7 @@ import type { OidcProviderConfig, ProviderConfigs, ProviderKeys } from './runtim import type { AuthSessionConfig } from './runtime/types/session' import type { ProviderInfo } from './types' import { extendServerRpc, onDevToolsInitialized } from '@nuxt/devtools-kit' -import { addImportsDir, addPlugin, addRouteMiddleware, addServerHandler, addServerPlugin, createResolver, defineNuxtModule, useLogger } from '@nuxt/kit' +import { addImportsDir, addPlugin, addRouteMiddleware, addServerHandler, addServerPlugin, createResolver, defineNuxtModule, extendRouteRules, useLogger } from '@nuxt/kit' import { defu } from 'defu' import { setupDevToolsUI } from './devtools' import * as providerPresets from './runtime/providers' @@ -215,10 +215,11 @@ export default defineNuxtModule({ // Add default provider routes if (process.env.NODE_ENV && !process.env.NODE_ENV.toLowerCase().startsWith('prod') && options.devMode?.enabled) { - addServerHandler({ - handler: resolve('./runtime/server/handler/dev'), - route: '/auth/login', - method: 'get', + extendRouteRules('/auth/login', { + redirect: { + to: '/auth/dev/login', + statusCode: 302, + }, }) addServerHandler({ handler: resolve('./runtime/server/handler/logout.get'), @@ -228,14 +229,15 @@ export default defineNuxtModule({ } else { if (options.defaultProvider && !options.middleware.customLoginPage) { - addServerHandler({ - handler: resolve('./runtime/server/handler/login.get'), - route: `/auth/${options.defaultProvider}/login`, - method: 'get', + extendRouteRules('/auth/login', { + redirect: { + to: `/auth/${options.defaultProvider}/login`, + statusCode: 302, + }, }) addServerHandler({ handler: resolve('./runtime/server/handler/logout.get'), - route: `/auth/${options.defaultProvider}/logout`, + route: `/auth/logout`, method: 'get', }) }