Skip to content

Commit

Permalink
feat: make auth cookie names configurable
Browse files Browse the repository at this point in the history
  • Loading branch information
Intevel committed Apr 26, 2023
1 parent bf04ac3 commit 6193e2e
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 11 deletions.
12 changes: 12 additions & 0 deletions docs/content/1.getting-started/2.options.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,17 @@ The Parameters which should be sent when the user is fetched, see [DirectusQuery

A static token

## `cookieNameToken`

- Default: `directus_token`

Specify the cookie name of the directus auth token

## `cookieNameRefreshToken`

- Default: `directus_refresh_token`

Specify the cookie name of the directus refresh auth token

::feedback-box
::
22 changes: 19 additions & 3 deletions src/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,16 @@ export interface ModuleOptions {
* @type string
*/
token?: string;
/**
* Token Cookie Name
*/
cookieNameToken?: string;
/**
* Refresh Token Cookie Name
* @type string
* @default 'directus_refresh_token'
*/
cookieNameRefreshToken?: string;
}

export default defineNuxtModule<ModuleOptions>({
Expand All @@ -39,7 +49,9 @@ export default defineNuxtModule<ModuleOptions>({
},
defaults: {
url: process.env.NUXT_DIRECTUS_URL,
autoFetch: true
autoFetch: true,
cookieNameToken: 'directus_token',
cookieNameRefreshToken: 'directus_refresh_token'
},
setup (options, nuxt) {
// Nuxt 2 / Bridge
Expand All @@ -50,7 +62,9 @@ export default defineNuxtModule<ModuleOptions>({
url: options.url,
autoFetch: options.autoFetch,
fetchUserParams: options.fetchUserParams,
token: options.token
token: options.token,
cookieNameToken: options.cookieNameToken,
cookieNameRefreshToken: options.cookieNameRefreshToken
}
)
}
Expand All @@ -61,7 +75,9 @@ export default defineNuxtModule<ModuleOptions>({
url: options.url,
autoFetch: options.autoFetch,
fetchUserParams: options.fetchUserParams,
token: options.token
token: options.token,
cookieNameToken: options.cookieNameToken,
cookieNameRefreshToken: options.cookieNameRefreshToken
})

const runtimeDir = fileURLToPath(new URL('./runtime', import.meta.url))
Expand Down
17 changes: 9 additions & 8 deletions src/runtime/composables/useDirectusToken.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,27 @@ import { useDirectusUrl } from './useDirectusUrl'
export const useDirectusToken = () => {
const nuxtApp = useNuxtApp()
const baseUrl = useDirectusUrl()
const config = useRuntimeConfig().public

const token = (): CookieRef<string | null> => {
nuxtApp._cookies = nuxtApp._cookies || {}
if (nuxtApp._cookies.directus_token) {
return nuxtApp._cookies.directus_token
if (nuxtApp._cookies[config.directus.cookieNameToken]) {
return nuxtApp._cookies[config.directus.cookieNameToken]
}

const cookie = useCookie<string | null>('directus_token')
nuxtApp._cookies.directus_token = cookie
const cookie = useCookie<string | null>(config.directus.cookieNameToken)
nuxtApp._cookies[config.directus.cookieNameToken] = cookie
return cookie
}

const refreshToken = (): CookieRef<string | null> => {
nuxtApp._cookies = nuxtApp._cookies || {}
if (nuxtApp._cookies.directus_refresh_token) {
return nuxtApp._cookies.directus_refresh_token
if (nuxtApp._cookies[config.directus.cookieNameRefreshToken]) {
return nuxtApp._cookies[config.directus.cookieNameRefreshToken]
}

const cookie = useCookie<string | null>('directus_refresh_token')
nuxtApp._cookies.directus_refresh_token = cookie
const cookie = useCookie<string | null>(config.directus.cookieNameRefreshToken)
nuxtApp._cookies[config.directus.cookieNameRefreshToken] = cookie
return cookie
}

Expand Down

0 comments on commit 6193e2e

Please sign in to comment.