feat: client and server logic to manage announcements #3

Merged
naomi merged 8 commits from feat/announcements into main 2025-07-05 19:27:21 -07:00
27 changed files with 2009 additions and 106 deletions
Showing only changes of commit 4fbd5c5d76 - Show all commits

View File

@ -4,6 +4,7 @@
* @author Naomi Carrigan * @author Naomi Carrigan
*/ */
import { routesWithoutCors } from "../config/routesWithoutCors.js";
import type { onRequestHookHandler } from "fastify"; import type { onRequestHookHandler } from "fastify";
const isValidOrigin = (origin: string | undefined): boolean => { const isValidOrigin = (origin: string | undefined): boolean => {
@ -27,7 +28,7 @@ const isValidOrigin = (origin: string | undefined): boolean => {
*/ */
// eslint-disable-next-line @typescript-eslint/no-misused-promises -- For reasons I cannot comprehend, Fastify seems to require us to return a request? // eslint-disable-next-line @typescript-eslint/no-misused-promises -- For reasons I cannot comprehend, Fastify seems to require us to return a request?
export const corsHook: onRequestHookHandler = async(request, response) => { export const corsHook: onRequestHookHandler = async(request, response) => {
if (!request.url.startsWith("/submit")) { if (routesWithoutCors.includes(request.url)) {
return undefined; return undefined;
} }
if (!isValidOrigin(request.headers.origin)) { if (!isValidOrigin(request.headers.origin)) {