From 5ba97d3423e0d239fed3b40ad2009b3dd4ab1b31 Mon Sep 17 00:00:00 2001 From: Grail Finder Date: Thu, 10 Jul 2025 10:43:52 +0300 Subject: [PATCH] Feat: signout endpoint --- components/index.html | 5 ++++- handlers/auth.go | 34 +++++++++++++++++++++++++++------- main.go | 1 + 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/components/index.html b/components/index.html index 9e68ace..180a8a7 100644 --- a/components/index.html +++ b/components/index.html @@ -4,8 +4,11 @@ {{ else if ne .LinkLogin "" }} {{template "linklogin" .LinkLogin}} {{ else if not .State.RoomID }} -
+

Hello {{.State.Username}}

+
+ +
diff --git a/handlers/auth.go b/handlers/auth.go index 6044cbe..84e0323 100644 --- a/handlers/auth.go +++ b/handlers/auth.go @@ -79,13 +79,6 @@ func HandleFrontLogin(w http.ResponseWriter, r *http.Request) { // make sure username does not exists cleanName := utils.RemoveSpacesFromStr(username) clearPass := utils.RemoveSpacesFromStr(password) - // login user - cookie, err := makeCookie(cleanName, r.RemoteAddr) - if err != nil { - log.Error("failed to login", "error", err) - abortWithError(w, err.Error()) - return - } // check if that user was already in db userstate, err := repo.PlayerGetByName(r.Context(), cleanName) if err != nil || userstate == nil { @@ -99,6 +92,13 @@ func HandleFrontLogin(w http.ResponseWriter, r *http.Request) { return } } + // login user + cookie, err := makeCookie(cleanName, r.RemoteAddr) + if err != nil { + log.Error("failed to login", "error", err) + abortWithError(w, err.Error()) + return + } http.SetCookie(w, cookie) fi := &models.FullInfo{ State: userstate, @@ -190,3 +190,23 @@ func makeCookie(username string, remote string) (*http.Cookie, error) { } return cookie, nil } + +func HandleSignout(w http.ResponseWriter, r *http.Request) { + cookie := &http.Cookie{ + Name: "session_token", + Value: "", + Path: "/", + MaxAge: -1, + HttpOnly: true, + } + cookie.Secure = true + cookie.SameSite = http.SameSiteNoneMode + if strings.Contains(r.RemoteAddr, "192.168.0") { + cookie.Domain = "192.168.0.100" + cookie.SameSite = http.SameSiteLaxMode + cookie.Secure = false + log.Info("changing cookie domain for signout", "domain", cookie.Domain) + } + http.SetCookie(w, cookie) + http.Redirect(w, r, "/", http.StatusFound) +} diff --git a/main.go b/main.go index 2369d9e..0dadf22 100644 --- a/main.go +++ b/main.go @@ -69,6 +69,7 @@ func ListenToRequests(port string) *http.Server { mux.HandleFunc("GET /ping", handlers.HandlePing) mux.HandleFunc("GET /", handlers.HandleHome) mux.HandleFunc("POST /login", handlers.HandleFrontLogin) + mux.HandleFunc("GET /signout", handlers.HandleSignout) mux.HandleFunc("POST /join-team", handlers.HandleJoinTeam) mux.HandleFunc("GET /end-turn", handlers.HandleEndTurn) mux.HandleFunc("POST /room-create", handlers.HandleCreateRoom)