From fb8b2ccfeeb659a4c4b6d417bd10997467a470ca Mon Sep 17 00:00:00 2001 From: "corrado.mulas" Date: Wed, 20 Nov 2024 03:12:39 +0100 Subject: [PATCH] First commit --- handlers.go | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/handlers.go b/handlers.go index 9f3fe37..de72847 100644 --- a/handlers.go +++ b/handlers.go @@ -32,7 +32,7 @@ func registerHandler(w http.ResponseWriter, r *http.Request) { return } - // Validate Turnstile token + // Validate CAPTCHA token valid, err := validateRecaptcha(req.Captcha) if err != nil { log.Printf("CAPTCHA validation failed: %v", err) @@ -45,7 +45,38 @@ func registerHandler(w http.ResponseWriter, r *http.Request) { return } - // Continue with Overleaf registration (omitted for brevity) + // Initialize Overleaf instance + baseURL := os.Getenv("OL_INSTANCE") + if baseURL == "" { + http.Error(w, "OL_INSTANCE is not set", http.StatusInternalServerError) + return + } + overleaf := NewOverleaf(baseURL) + + // Admin login using environment variables + adminEmail := os.Getenv("OL_ADMIN_EMAIL") + adminPassword := os.Getenv("OL_ADMIN_PASSWORD") + if adminEmail == "" || adminPassword == "" { + http.Error(w, "OL_ADMIN_EMAIL or OL_ADMIN_PASSWORD is not set", http.StatusInternalServerError) + return + } + + // Log in as admin + if err := overleaf.Login(adminEmail, adminPassword); err != nil { + log.Printf("Admin login failed: %v", err) + http.Error(w, fmt.Sprintf("Admin login failed: %v", err), http.StatusInternalServerError) + return + } + + // Register the user with the provided email + if err := overleaf.RegisterUser(req.Email); err != nil { + log.Printf("Failed to create user: %v", err) + http.Error(w, fmt.Sprintf("Failed to create user: %v", err), http.StatusInternalServerError) + return + } + + // Respond with success + w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(map[string]string{ "message": "User registered successfully. Please check your email to set your password.",