feat: implement logout functionality

This commit is contained in:
2026-05-02 18:28:00 +02:00
committed by Mikkel Elvers
parent 79a5a9c2e6
commit d9ffa20d98
3 changed files with 26 additions and 0 deletions

View File

@@ -108,3 +108,18 @@ func SetSessionCookie(w http.ResponseWriter, sessionID string, expiresAt time.Ti
Path: "/",
})
}
func (s *Service) Logout(ctx context.Context, sessionID string) error {
return s.db.DeleteSession(ctx, sessionID)
}
func ClearSessionCookie(w http.ResponseWriter) {
http.SetCookie(w, &http.Cookie{
Name: "session_id",
Value: "",
Expires: time.Unix(0, 0),
MaxAge: -1,
HttpOnly: true,
Path: "/",
})
}

View File

@@ -68,3 +68,13 @@ func (h *Handler) HandleLogin(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, "/", http.StatusSeeOther)
}
func (h *Handler) HandleLogout(w http.ResponseWriter, r *http.Request) {
cookie, err := r.Cookie("session_id")
if err == nil {
_ = h.authService.Logout(r.Context(), cookie.Value)
}
ClearSessionCookie(w)
http.Redirect(w, r, "/", http.StatusSeeOther)
}

View File

@@ -96,6 +96,7 @@ func NewRouter(cfg Config) http.Handler {
pkgmiddleware.RateLimitAuth(pkgmiddleware.VerifyOrigin(http.HandlerFunc(authHandler.HandleLogin))).ServeHTTP(w, r)
}
})
mux.HandleFunc("/logout", authHandler.HandleLogout)
// Watchlist Endpoints
mux.HandleFunc("/api/watchlist/card", watchlistHandler.HandleCardWatchlist)