diff --git a/src/module.ts b/src/module.ts index e8e65b7e..6715d4fc 100644 --- a/src/module.ts +++ b/src/module.ts @@ -2,7 +2,7 @@ import { resolve } from "path"; import { fileURLToPath } from "url"; import defu from "defu"; import { defineNuxtModule, addPlugin } from "@nuxt/kit"; - +import { DirectusQueryParams } from "./runtime/types"; export interface ModuleOptions { /** * Directus API URL @@ -16,6 +16,11 @@ export interface ModuleOptions { * @type boolean */ autoFetch?: boolean; + /** + * fetch user params + * @type boolean + */ + fetchUserParams?: DirectusQueryParams; } export default defineNuxtModule({ @@ -37,6 +42,7 @@ export default defineNuxtModule({ { url: options.url, autoFetch: options.autoFetch, + fetchUserParams: options.fetchUserParams, } ); diff --git a/src/runtime/composables/useDirectusAuth.ts b/src/runtime/composables/useDirectusAuth.ts index be08d47f..790523eb 100644 --- a/src/runtime/composables/useDirectusAuth.ts +++ b/src/runtime/composables/useDirectusAuth.ts @@ -11,9 +11,11 @@ import { useDirectus } from "./useDirectus"; import { useDirectusUser } from "./useDirectusUser"; import { useDirectusUrl } from "./useDirectusUrl"; import { useDirectusToken } from "./useDirectusToken"; +import { useRuntimeConfig } from "#app"; export const useDirectusAuth = () => { const url = useDirectusUrl(); + const config = useRuntimeConfig(); const directus = useDirectus(); const user = useDirectusUser(); const token = useDirectusToken(); @@ -29,7 +31,23 @@ export const useDirectusAuth = () => { const fetchUser = async (): Promise> => { if (token.value && !user.value) { try { - var res = await directus<{ data: DirectusUser }>("/users/me"); + if (config.directus.fetchUserParams?.filter) { + (config.directus.fetchUserParams.filter as unknown) = JSON.stringify( + config.directus.fetchUserParams.filter + ); + } + if (config.directus.fetchUserParams?.deep) { + (config.directus.fetchUserParams.deep as unknown) = JSON.stringify( + config.directus.fetchUserParams.deep + ); + } + if (config.directus.fetchUserParams) { + var res = await directus<{ data: DirectusUser }>("/users/me", { + params: config.directus.fetchUserParams, + }); + } else { + var res = await directus<{ data: DirectusUser }>("/users/me"); + } setUser(res.data); } catch (e) { setToken(null);