directus.ts bug fixes for bearer auth
This commit is contained in:
parent
74036bc2ce
commit
1b2d094c0c
1 changed files with 10 additions and 6 deletions
|
|
@ -3,12 +3,12 @@
|
|||
|
||||
import { cookies, headers } from "next/headers";
|
||||
|
||||
const BASE = (process.env.DIRECTUS_URL || "").replace(/\/$/, "");
|
||||
const BASE = (process.env.DIRECTUS_URL || process.env.NEXT_PUBLIC_API_BASE_URL || "").replace(/\/$/, "");
|
||||
const TOKEN_ADMIN_REGISTER = process.env.DIRECTUS_TOKEN_ADMIN_REGISTER || ""; // server-only
|
||||
const ROLE_MEMBER_NAME = process.env.DIRECTUS_ROLE_MEMBER_NAME || "Users";
|
||||
const PROJECTS_COLLECTION = process.env.DIRECTUS_PROJECTS_COLLECTION || "projects";
|
||||
|
||||
if (!BASE) console.warn("[directus] Missing DIRECTUS_URL");
|
||||
if (!BASE) console.warn("[directus] Missing DIRECTUS_URL / NEXT_PUBLIC_API_BASE_URL");
|
||||
if (!TOKEN_ADMIN_REGISTER)
|
||||
console.warn("[directus] Missing DIRECTUS_TOKEN_ADMIN_REGISTER (used for registration)");
|
||||
|
||||
|
|
@ -61,8 +61,12 @@ export function getUserBearerFromRequest(req?: Request): string | null {
|
|||
// Low-level helpers (bearer REQUIRED; no fallbacks)
|
||||
// ─────────────────────────────────────────────────────────────
|
||||
|
||||
function asAuthHeader(bearer: string) {
|
||||
return bearer?.startsWith("Bearer ") ? bearer : `Bearer ${bearer}`;
|
||||
}
|
||||
|
||||
function authHeaders(bearer: string, extra?: HeadersInit): HeadersInit {
|
||||
return { Accept: "application/json", Authorization: `Bearer ${bearer}`, ...extra };
|
||||
return { Accept: "application/json", Authorization: asAuthHeader(bearer), ...extra };
|
||||
}
|
||||
|
||||
async function parseJsonSafe(res: Response) {
|
||||
|
|
@ -205,15 +209,15 @@ export async function resolveMemberRoleId(): Promise<string> {
|
|||
return hit;
|
||||
}
|
||||
|
||||
/** Registrations always create a 'Users' role account. No overrides. */
|
||||
/** Registrations create a 'Users' role account. */
|
||||
export async function createDirectusUser(input: {
|
||||
username: string;
|
||||
password: string;
|
||||
email?: string;
|
||||
}: PromiseLike<any> extends never ? never : any): Promise<{ id: string }> {
|
||||
}): Promise<{ id: string }> {
|
||||
const role = await resolveMemberRoleId();
|
||||
|
||||
// If email is omitted, create a stable placeholder so login can still work.
|
||||
// If email were omitted, we could synthesize; your current registration requires email.
|
||||
const email =
|
||||
input.email && input.email.trim()
|
||||
? input.email.trim()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue