mirror of
https://github.com/TheRealOwenRees/chess-scribe-website.git
synced 2026-09-19 11:03:52 +00:00
guard env vars
This commit is contained in:
+11
-4
@@ -5,15 +5,22 @@ const clientSchema = z.object({
|
|||||||
VITE_MATOMO_URL: z.url("Invalid URL format"),
|
VITE_MATOMO_URL: z.url("Invalid URL format"),
|
||||||
VITE_MATOMO_SITE_ID: z.string("Invalid Site ID"),
|
VITE_MATOMO_SITE_ID: z.string("Invalid Site ID"),
|
||||||
VITE_MAINTENANCE_MODE: z
|
VITE_MAINTENANCE_MODE: z
|
||||||
.enum(["true", "false"], 'Invalid Maintenance Mode (must be "true" or "false")')
|
.enum(
|
||||||
|
["true", "false"],
|
||||||
|
'Invalid Maintenance Mode (must be "true" or "false")',
|
||||||
|
)
|
||||||
.transform((v) => v === "true"),
|
.transform((v) => v === "true"),
|
||||||
VITE_MAINTENANCE_MODE_MESSAGE: z.string().optional(),
|
VITE_MAINTENANCE_MODE_MESSAGE: z.string().optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
const serverSchema = z.object({
|
const serverSchema = z.object({
|
||||||
DISCORD_CONTACT_WEBHOOK: z.string("Invalid Discord Contact Webhook URL"),
|
DISCORD_CONTACT_WEBHOOK: z
|
||||||
DISCORD_ERROR_LOG_WEBHOOK: z.string("Invalid Discord Error Log Webhook URL"),
|
.string("Invalid Discord Contact Webhook URL")
|
||||||
LICHESS_CLIENT_ID: z.string("Invalid Lichess Client ID"),
|
.optional(),
|
||||||
|
DISCORD_ERROR_LOG_WEBHOOK: z
|
||||||
|
.string("Invalid Discord Error Log Webhook URL")
|
||||||
|
.optional(),
|
||||||
|
LICHESS_CLIENT_ID: z.string("Invalid Lichess Client ID").optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
const fullSchema = z.object({
|
const fullSchema = z.object({
|
||||||
|
|||||||
@@ -7,6 +7,10 @@ export const sendToDiscord = createServerFn({ method: "POST" })
|
|||||||
data,
|
data,
|
||||||
)
|
)
|
||||||
.handler(async ({ data }) => {
|
.handler(async ({ data }) => {
|
||||||
|
if (!env.DISCORD_CONTACT_WEBHOOK) {
|
||||||
|
return { ok: false, error: "Contact form is not configured" };
|
||||||
|
}
|
||||||
|
|
||||||
const response = await fetch(env.DISCORD_CONTACT_WEBHOOK, {
|
const response = await fetch(env.DISCORD_CONTACT_WEBHOOK, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
@@ -18,10 +18,14 @@ import {
|
|||||||
const createVerifier = () => base64UrlEncode(randomBytes(32));
|
const createVerifier = () => base64UrlEncode(randomBytes(32));
|
||||||
const createChallenge = (verifier: string) => base64UrlEncode(sha256(verifier));
|
const createChallenge = (verifier: string) => base64UrlEncode(sha256(verifier));
|
||||||
|
|
||||||
const getRedirectUri = () =>
|
const getRedirectUri = () => {
|
||||||
process.env.NODE_ENV === "production"
|
if (process.env.NODE_ENV === "production" && !env.LICHESS_CLIENT_ID) {
|
||||||
|
throw new Error("LICHESS_CLIENT_ID is not configured");
|
||||||
|
}
|
||||||
|
return process.env.NODE_ENV === "production"
|
||||||
? `https://${env.LICHESS_CLIENT_ID}/callback`
|
? `https://${env.LICHESS_CLIENT_ID}/callback`
|
||||||
: "http://localhost:3000/callback";
|
: "http://localhost:3000/callback";
|
||||||
|
};
|
||||||
|
|
||||||
export const getSession = createServerFn({ method: "GET" }).handler(
|
export const getSession = createServerFn({ method: "GET" }).handler(
|
||||||
async () => {
|
async () => {
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ const config = defineConfig({
|
|||||||
prerender: {
|
prerender: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
crawlLinks: true,
|
crawlLinks: true,
|
||||||
|
failOnError: true,
|
||||||
},
|
},
|
||||||
pages: [
|
pages: [
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user