Skip to content

Commit 80f2867

Browse files
authored
feat: add more configuration options (#181)
1 parent e13be84 commit 80f2867

File tree

4 files changed

+58
-22
lines changed

4 files changed

+58
-22
lines changed

README.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ export default defineNuxtConfig({
3232
// You can also configure this by setting NUXT_PUBLIC_HANKO_API_URL at runtime
3333
apiURL: '<YOUR_API_URL>',
3434
// You can also customise these if required
35-
// cookieName: 'hanko'
35+
// cookieName: 'hanko',
36+
// cookieSameSite: 'Lax',
37+
// cookieDomain: 'nuxt.com',
38+
// storageKey: 'hanko',
3639
// redirects: {
3740
// login: '/login',
3841
// success: '/',
@@ -41,6 +44,14 @@ export default defineNuxtConfig({
4144
// },
4245
// registerComponents: true,
4346
// augmentContext: true,
47+
// components: {
48+
// shadow: true,
49+
// injectStyles: true,
50+
// enablePasskeys: true,
51+
// hidePasskeyButtonOnLogin: true,
52+
// translations: {},
53+
// fallbackLanguage: 'en'
54+
// }
4455
},
4556
})
4657
```

src/module.ts

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
1-
import {
2-
defineNuxtModule,
3-
addPlugin,
4-
createResolver,
5-
addImportsSources,
6-
addRouteMiddleware,
7-
addServerHandler,
8-
addTemplate,
9-
} from '@nuxt/kit'
1+
import type { PublicRuntimeConfig } from 'nuxt/schema'
2+
import { defineNuxtModule, addPlugin, createResolver, addImportsSources, addRouteMiddleware, addServerHandler, addTemplate } from '@nuxt/kit'
3+
import type { CookieSameSite, RegisterOptions } from '@teamhanko/hanko-elements'
104
import { defu } from 'defu'
115

126
export interface ModuleOptions {
@@ -17,12 +11,24 @@ export interface ModuleOptions {
1711
registerComponents?: boolean
1812
augmentContext?: boolean
1913
cookieName?: string
14+
cookieSameSite?: CookieSameSite
15+
cookieDomain?: string
16+
storageKey?: string
2017
redirects?: {
2118
login?: string
2219
home?: string
2320
success?: string
2421
followRedirect?: boolean
2522
}
23+
components?: {
24+
shadow?: RegisterOptions['shadow']
25+
injectStyles?: RegisterOptions['injectStyles']
26+
enablePasskeys?: RegisterOptions['enablePasskeys']
27+
hidePasskeyButtonOnLogin?: RegisterOptions['hidePasskeyButtonOnLogin']
28+
translations?: RegisterOptions['translations']
29+
translationsLocation?: RegisterOptions['translationsLocation']
30+
fallbackLanguage?: RegisterOptions['fallbackLanguage']
31+
}
2632
}
2733

2834
export default defineNuxtModule<ModuleOptions>({
@@ -51,10 +57,13 @@ export default defineNuxtModule<ModuleOptions>({
5157

5258
nuxt.options.runtimeConfig.public = defu(nuxt.options.runtimeConfig.public, {
5359
hanko: {
54-
apiURL: options.apiURL,
55-
cookieName: options.cookieName,
56-
},
57-
})
60+
apiURL: options.apiURL!,
61+
cookieName: options.cookieName!,
62+
cookieSameSite: options.cookieSameSite || undefined,
63+
cookieDomain: options.cookieDomain || undefined,
64+
components: options.components || {},
65+
} satisfies PublicRuntimeConfig['hanko'],
66+
}) as PublicRuntimeConfig
5867

5968
nuxt.options.appConfig = defu(nuxt.options.appConfig, {
6069
hanko: {
@@ -128,3 +137,16 @@ export default defineNuxtModule<ModuleOptions>({
128137
})
129138
},
130139
})
140+
141+
declare module '@nuxt/schema' {
142+
interface PublicRuntimeConfig {
143+
hanko: {
144+
apiURL: NonNullable<ModuleOptions['apiURL']>
145+
cookieName: NonNullable<ModuleOptions['cookieName']>
146+
cookieSameSite?: ModuleOptions['cookieSameSite']
147+
cookieDomain?: ModuleOptions['cookieDomain']
148+
storageKey?: ModuleOptions['storageKey']
149+
components: ModuleOptions['components']
150+
}
151+
}
152+
}

src/runtime/composables/index.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ export function useHanko() {
1212
}
1313

1414
const hankoConfig = useRuntimeConfig().public.hanko
15-
const hankoOptions = {
15+
return new Hanko(hankoConfig.apiURL, {
1616
cookieName: hankoConfig.cookieName,
17-
localStorageKey: hankoConfig.cookieName,
18-
}
19-
return new Hanko(hankoConfig.apiURL, hankoOptions)
17+
localStorageKey: hankoConfig.storageKey,
18+
cookieSameSite: hankoConfig.cookieSameSite,
19+
cookieDomain: hankoConfig.cookieDomain,
20+
})
2021
}

src/runtime/plugins/components.client.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ import { defineNuxtPlugin, useRuntimeConfig } from '#imports'
33

44
export default defineNuxtPlugin((nuxtApp) => {
55
const config = useRuntimeConfig()
6-
const hankoOptions = {
7-
storageKey: config.public.hanko.cookieName,
8-
}
96
nuxtApp.hook('app:mounted', async () => {
107
// register hanko web components
118
// see: https://github.com/teamhanko/hanko/blob/main/frontend/elements/README.md#script
12-
await register(config.public.hanko.apiURL, hankoOptions)
9+
await register(config.public.hanko.apiURL, {
10+
storageKey: config.public.hanko.storageKey,
11+
cookieSameSite: config.public.hanko.cookieSameSite,
12+
cookieDomain: config.public.hanko.cookieDomain,
13+
...config.public.hanko.components,
14+
})
1315
})
1416
})

0 commit comments

Comments
 (0)