From ce0a71aade3630a5e80a08e95296aa3aeb9a608e Mon Sep 17 00:00:00 2001 From: Stephanie Gredell Date: Sun, 15 Jun 2025 19:07:46 -0700 Subject: [PATCH] add env var checks --- cmd/systemdesigngame/main.go | 10 +++++++++- internal/auth/auth.go | 9 +++++++++ internal/server/server.go | 6 ------ 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/cmd/systemdesigngame/main.go b/cmd/systemdesigngame/main.go index 7a7a412..e10a977 100644 --- a/cmd/systemdesigngame/main.go +++ b/cmd/systemdesigngame/main.go @@ -2,19 +2,22 @@ package main import ( "flag" - "github.com/joho/godotenv" + "fmt" "html/template" "net/http" "os" "systemdesigngame/internal/auth" "systemdesigngame/internal/server" "systemdesigngame/router" + + "github.com/joho/godotenv" ) func main() { devMode := flag.Bool("dev", false, "load .env (local dev)") flag.Parse() + fmt.Printf("devmode: %v", *devMode) if *devMode { if err := godotenv.Load(); err != nil { panic("failed to load .env") @@ -24,6 +27,11 @@ func main() { // set up JWT secret used for authentication auth.JwtSecret = []byte(os.Getenv("JWT_SECRET")) + + if len(auth.JwtSecret) == 0 { + panic("JWT_SECRET is not set") + } + tmpl := template.Must(template.ParseGlob("static/*.html")) server.InitApp() diff --git a/internal/auth/auth.go b/internal/auth/auth.go index 09c494f..12e3ea1 100644 --- a/internal/auth/auth.go +++ b/internal/auth/auth.go @@ -38,6 +38,15 @@ func LoginHandler(w http.ResponseWriter, r *http.Request) { clientId := os.Getenv("GITHUB_CLIENT_ID") redirectURI := os.Getenv("GITHUB_CALLBACK") + + if os.Getenv("GITHUB_CLIENT_ID") == "" { + panic("GITHUB_CLIENT_ID is not set") + } + + if os.Getenv("GITHUB_CALLBACK") == "" { + panic("GITHUB_CALLBACK is not set") + } + scope := "read:user user:email" url := fmt.Sprintf( "https://github.com/login/oauth/authorize?client_id=%s&redirect_uri=%s&scope=%s", diff --git a/internal/server/server.go b/internal/server/server.go index 82f544d..f87761f 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -10,15 +10,9 @@ import ( "systemdesigngame/internal/auth" "systemdesigngame/internal/level" "time" - - "github.com/joho/godotenv" ) func InitApp() { - if err := godotenv.Load(); err != nil { - log.Fatal("failed to load .env") - } - auth.JwtSecret = []byte(os.Getenv("JWT_SECRET")) levels, err := level.LoadLevels("data/levels.json")