feat: add Google Sign-In with JWT auth and Neon DB persistence
This commit is contained in:
@@ -4,6 +4,8 @@ import (
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
"tutor/internal/auth"
|
||||
"tutor/internal/config"
|
||||
"tutor/internal/db"
|
||||
"tutor/internal/httpapi"
|
||||
@@ -22,12 +24,14 @@ func NewServer(cfg config.Config) *http.Server {
|
||||
var memoryStore learnermemory.Store
|
||||
var ontologyStore ontology.Store
|
||||
var assetsStore teachingassets.Store
|
||||
var pool *pgxpool.Pool
|
||||
|
||||
if cfg.DatabaseURL != "" {
|
||||
pool, err := db.Open(cfg.DatabaseURL)
|
||||
p, err := db.Open(cfg.DatabaseURL)
|
||||
if err != nil {
|
||||
log.Fatalf("open database: %v", err)
|
||||
}
|
||||
pool = p
|
||||
if err := db.Migrate(pool); err != nil {
|
||||
log.Fatalf("migrate database: %v", err)
|
||||
}
|
||||
@@ -51,8 +55,15 @@ func NewServer(cfg config.Config) *http.Server {
|
||||
service := interview.NewService(interviewStore, runner, memory)
|
||||
handler := httpapi.NewHandler(cfg, service, memory, progress, onto, assets)
|
||||
|
||||
mux := handler.Routes().(*http.ServeMux)
|
||||
if pool != nil && cfg.GoogleClientID != "" && cfg.JWTSecret != "" {
|
||||
authService := auth.NewService(pool, cfg.GoogleClientID, cfg.JWTSecret)
|
||||
authService.RegisterRoutes(mux)
|
||||
log.Println("auth routes registered")
|
||||
}
|
||||
|
||||
return &http.Server{
|
||||
Addr: cfg.HTTPAddr,
|
||||
Handler: handler.Routes(),
|
||||
Handler: mux,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user