From c3997a1df58a7725c00a5491e9e015e2aa813b2b Mon Sep 17 00:00:00 2001 From: Xevion Date: Tue, 31 Dec 2024 16:58:09 -0600 Subject: [PATCH] setup CRON_SECRET, DIRECTUS_API_TOKEN, GITHUB_API_TOKEN, static directus token authentication --- src/env/schema.mjs | 3 +++ src/utils/directus.ts | 31 +++++++++++++++++++++---------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/env/schema.mjs b/src/env/schema.mjs index c7091aa..c5ee864 100644 --- a/src/env/schema.mjs +++ b/src/env/schema.mjs @@ -6,6 +6,9 @@ import { z } from "zod"; * This way you can ensure the app isn't built with invalid env vars. */ export const serverSchema = z.object({ + CRON_SECRET: z.string(), + GITHUB_API_TOKEN: z.string(), + DIRECTUS_API_TOKEN: z.string(), DIRECTUS_REVALIDATE_KEY: z.string(), NODE_ENV: z.enum(["development", "test", "production"]), TITLE: z.preprocess((value) => { diff --git a/src/utils/directus.ts b/src/utils/directus.ts index bdba41e..83ef6e2 100644 --- a/src/utils/directus.ts +++ b/src/utils/directus.ts @@ -1,4 +1,5 @@ -import { createDirectus, rest } from "@directus/sdk"; +import { env } from "@/env/server.mjs"; +import { createDirectus, rest, staticToken } from "@directus/sdk"; export interface Schema { metadata: Metadata; @@ -23,20 +24,28 @@ export interface ProjectTechnology { export interface Project { id: string; - - // One2Many - links: number[] | ProjectLink[]; - // Many2Many - technologies: number[] | ProjectTechnology[]; + // core fields + date_created: string; + date_updated: string; + sort: number; // used for ordering + status: string; + + // relationships + links: number[] | ProjectLink[]; // One2Many + technologies: number[] | ProjectTechnology[]; // Many2Many + + // relevant fields icon: string | null; name: string; description: string; shortDescription: string; - featured: boolean; - wakatimeOffset: number | null; - bannerImage: string; + // misc fields + featured: boolean; // places the project in the 'featured' section + autocheckUpdated: boolean; // triggers a cron job to check for updates + wakatimeOffset: number | null; // offsets the WakaTime fetched data + bannerImage: string; // file identifier } export interface Link { @@ -62,6 +71,8 @@ export interface Metadata { resumeFilename: string; } -const directus = createDirectus("https://api.xevion.dev").with(rest()); +const directus = createDirectus("https://api.xevion.dev") + .with(staticToken(env.DIRECTUS_API_TOKEN)) + .with(rest()); export default directus;