Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into enh/935-allow-externa…
Browse files Browse the repository at this point in the history
…l-login-page
  • Loading branch information
phoenix-ru committed Dec 12, 2024
2 parents 461ae45 + 37b0c65 commit e9c6a01
Show file tree
Hide file tree
Showing 28 changed files with 849 additions and 210 deletions.
7 changes: 5 additions & 2 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
branches: [main]

env:
NODE_VER: 22.5
NODE_VER: 22.11
CI: true

jobs:
Expand Down Expand Up @@ -37,6 +37,9 @@ jobs:
# Check linting and typing
- run: pnpm lint
- run: pnpm typecheck

# Run unit tests
- run: pnpm test:unit

# Check building
- run: pnpm build
Expand Down Expand Up @@ -131,5 +134,5 @@ jobs:
# start prod-app and curl from it
- run: "timeout 60 pnpm start & (sleep 45 && curl --fail localhost:$PORT)"
env:
AUTH_ORIGIN: "http://localhost:3001"
AUTH_ORIGIN: "http://localhost:3001/api/auth"
PORT: 3001
2 changes: 1 addition & 1 deletion .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:
workflow_dispatch:

env:
NODE_VER: 22.5
NODE_VER: 22.11
CI: true

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pkg.pr.new.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:
pull_request:

env:
NODE_VER: 22.5
NODE_VER: 22.11

jobs:
build:
Expand Down
2 changes: 1 addition & 1 deletion docs/guide/application-side/protecting-pages.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ If the global middleware is disabled, you can manually add the middleware to ind
```vue
<script lang="ts" setup>
definePageMeta({
middleware: 'auth'
middleware: 'sidebase-auth'
})
</script>
Expand Down
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@
"dev:prepare": "nuxt-module-build build --stub",
"docs:dev": "vitepress dev docs",
"docs:build": "vitepress build docs",
"docs:preview": "vitepress preview docs"
"docs:preview": "vitepress preview docs",
"test:unit": "vitest"
},
"dependencies": {
"@nuxt/kit": "^3.12.4",
Expand Down Expand Up @@ -61,6 +62,7 @@
"ts-essentials": "^9.4.2",
"typescript": "^5.5.4",
"vitepress": "^1.3.1",
"vitest": "^1.6.0",
"vue-tsc": "^2.0.29"
},
"packageManager": "pnpm@9.6.0+sha512.38dc6fba8dba35b39340b9700112c2fe1e12f10b17134715a4aa98ccf7bb035e76fd981cf0bb384dfa98f8d6af5481c2bef2f4266a24bfa20c34eb7147ce0b5e"
Expand Down
2 changes: 1 addition & 1 deletion playground-authjs/nuxt.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export default defineNuxtConfig({
globalAppMiddleware: {
isEnabled: true
},
baseURL: `http://localhost:${process.env.PORT || 3000}`
baseURL: `http://localhost:${process.env.PORT || 3000}/api/auth`
},
routeRules: {
'/with-caching': {
Expand Down
117 changes: 111 additions & 6 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

47 changes: 23 additions & 24 deletions src/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,10 @@ import {
useLogger
} from '@nuxt/kit'
import { defu } from 'defu'
import { joinURL } from 'ufo'
import { genInterface } from 'knitwork'
import type { DeepRequired } from 'ts-essentials'
import type { NuxtModule } from 'nuxt/schema'
import { getOriginAndPathnameFromURL, isProduction } from './runtime/helpers'
import { isProduction } from './runtime/helpers'
import type {
AuthProviders,
ModuleOptions,
Expand All @@ -26,6 +25,8 @@ import type {

const topLevelDefaults = {
isEnabled: true,
baseURL: '/api/auth',
disableInternalRouting: false as boolean,
disableServerSideAuth: false,
originEnvKey: 'AUTH_ORIGIN',
sessionRefresh: {
Expand Down Expand Up @@ -108,26 +109,16 @@ export default defineNuxtModule<ModuleOptions>({
const logger = useLogger(PACKAGE_NAME)

// 0. Assemble all options
const { origin, pathname = '/api/auth' } = getOriginAndPathnameFromURL(
userOptions.baseURL ?? ''
)

const selectedProvider = userOptions.provider?.type ?? 'authjs'

const options = {
...defu(userOptions, topLevelDefaults, {
computed: {
origin,
pathname,
fullBaseUrl: joinURL(origin ?? '', pathname)
}
}),
const options = defu({
// We use `as` to infer backend types correctly for runtime-usage (everything is set, although for user everything was optional)
provider: defu(
userOptions.provider,
defaultsByBackend[selectedProvider]
) as DeepRequired<AuthProviders>
}
}, userOptions, topLevelDefaults)

// 1. Check if module should be enabled at all
if (!options.isEnabled) {
Expand All @@ -137,15 +128,23 @@ export default defineNuxtModule<ModuleOptions>({

logger.info('`nuxt-auth` setup starting')

// 2. Set up runtime configuration
// 2.1. Disable internal routing for `local` provider when not specified otherwise
// https://github.com/sidebase/nuxt-auth/issues/797
if (userOptions.disableInternalRouting === undefined && selectedProvider === 'local') {
options.disableInternalRouting = true
}

// 2.2. Set up runtime configuration
if (!isProduction) {
const authjsAddition
= selectedProvider === 'authjs'
? ', ensure that `NuxtAuthHandler({ ... })` is there, see https://sidebase.io/nuxt-auth/configuration/nuxt-auth-handler'
: ''
logger.info(
`Selected provider: ${selectedProvider}. Auth API location is \`${options.computed.fullBaseUrl}\`${authjsAddition}`
)
const loggerMessages = [
`Selected provider: ${selectedProvider}.`,
`Auth API location is \`${options.baseURL}\`, if you would like to change this, see https://auth.sidebase.io/guide/application-side/configuration#baseurl.`
]
if (selectedProvider === 'authjs') {
loggerMessages.push('Ensure that the `NuxtAuthHandler({ ... })` is there, see https://auth.sidebase.io/guide/authjs/nuxt-auth-handler')
}

logger.info(loggerMessages.join(' '))
}

nuxt.options.runtimeConfig = nuxt.options.runtimeConfig || { public: {} }
Expand Down Expand Up @@ -242,8 +241,8 @@ export default defineNuxtModule<ModuleOptions>({

// 6. Register middleware for autocomplete in definePageMeta
addRouteMiddleware({
name: 'auth',
path: resolve('./runtime/middleware/auth')
name: 'sidebase-auth',
path: resolve('./runtime/middleware/sidebase-auth')
})

// 7. Add plugin for initial load
Expand Down
Loading

0 comments on commit e9c6a01

Please sign in to comment.