diff --git a/lib/directus.ts b/lib/directus.ts index 963218b7..5f69b056 100644 --- a/lib/directus.ts +++ b/lib/directus.ts @@ -3,8 +3,7 @@ const BASE = (process.env.DIRECTUS_URL || "").replace(/\/$/, ""); const TOKEN_ADMIN_REGISTER = process.env.DIRECTUS_TOKEN_ADMIN_REGISTER || ""; // server-only -const ROLE_MEMBER_ID_ENV = process.env.DIRECTUS_ROLE_MEMBER_ID || ""; -const ROLE_MEMBER_NAME_ENV = process.env.DIRECTUS_ROLE_MEMBER_NAME || "Users"; +const ROLE_MEMBER_NAME = process.env.DIRECTUS_ROLE_MEMBER_NAME || "Users"; const PROJECTS_COLLECTION = process.env.DIRECTUS_PROJECTS_COLLECTION || "projects"; @@ -209,9 +208,7 @@ export async function patchProject( // ───────────────────────────────────────────────────────────── export async function resolveMemberRoleId(): Promise { - if (ROLE_MEMBER_ID_ENV) return ROLE_MEMBER_ID_ENV; - - const name = ROLE_MEMBER_NAME_ENV; + const name = ROLE_MEMBER_NAME; const q = `/roles?filter[name][_eq]=${encodeURIComponent(name)}&fields=id,name&limit=1`; const { data } = await directusAdminFetch<{ data: Array<{ id: string }> }>(q); const hit = data?.[0]?.id; @@ -219,14 +216,15 @@ export async function resolveMemberRoleId(): Promise { return hit; } +/** Registrations always create a 'Users' role account. No overrides. */ export async function createDirectusUser(input: { username: string; password: string; email?: string; - roleId?: string; }): Promise<{ id: string }> { - const role = input.roleId || (await resolveMemberRoleId()); + const role = await resolveMemberRoleId(); + // If email is omitted, create a stable placeholder so login can still work. const email = input.email && input.email.trim() ? input.email.trim() @@ -262,5 +260,6 @@ export async function loginDirectus(email: string, password: string) { cache: "no-store", }); const json = await throwIfNotOk(res); + // Directus typically returns { data: { access_token, refresh_token, expires } } return json?.data ?? json; }