aboutsummaryrefslogtreecommitdiffhomepage
path: root/backend/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'backend/main.go')
-rw-r--r--backend/main.go20
1 files changed, 19 insertions, 1 deletions
diff --git a/backend/main.go b/backend/main.go
index 311c3dd..c1b670a 100644
--- a/backend/main.go
+++ b/backend/main.go
@@ -73,13 +73,14 @@ func main() {
apiGroup := e.Group(conf.BasePath + "api")
apiGroup.Use(ratelimit.LoginRateLimitMiddleware(loginRL))
- apiGroup.Use(api.JWTCookieMiddleware)
+ apiGroup.Use(api.SessionCookieMiddleware(queries))
apiGroup.Use(oapimiddleware.OapiRequestValidator(openAPISpec))
apiHandler := api.NewHandler(queries, gameHub, conf)
api.RegisterHandlers(apiGroup, api.NewStrictHandler(apiHandler, nil))
adminHandler := admin.NewHandler(queries, conf)
adminGroup := e.Group(conf.BasePath + "admin")
+ adminGroup.Use(api.SessionCookieMiddleware(queries))
adminHandler.RegisterHandlers(adminGroup)
if conf.IsLocal {
@@ -104,6 +105,23 @@ func main() {
}))
}
+ sessionCleanupCtx, cancelSessionCleanup := context.WithCancel(context.Background())
+ defer cancelSessionCleanup()
+ go func() {
+ ticker := time.NewTicker(time.Hour)
+ defer ticker.Stop()
+ for {
+ select {
+ case <-sessionCleanupCtx.Done():
+ return
+ case <-ticker.C:
+ if err := queries.DeleteExpiredSessions(sessionCleanupCtx); err != nil {
+ log.Printf("failed to delete expired sessions: %v", err)
+ }
+ }
+ }
+ }()
+
go gameHub.Run()
if err := e.Start(":80"); err != http.ErrServerClosed {