Feat: signout endpoint
This commit is contained in:
@ -4,8 +4,11 @@
|
|||||||
{{ else if ne .LinkLogin "" }}
|
{{ else if ne .LinkLogin "" }}
|
||||||
{{template "linklogin" .LinkLogin}}
|
{{template "linklogin" .LinkLogin}}
|
||||||
{{ else if not .State.RoomID }}
|
{{ else if not .State.RoomID }}
|
||||||
<div id="hello-user" class="text-xl py-2">
|
<div id="hello-user" class="flex text-xl justify-center space-x-8 py-2">
|
||||||
<p>Hello {{.State.Username}}</p>
|
<p>Hello {{.State.Username}}</p>
|
||||||
|
<div>
|
||||||
|
<a href="/signout"><button class="bg-amber-100 text-black px-4 py-2 rounded">signout</button></a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="create-room" class="create-room-div">
|
<div id="create-room" class="create-room-div">
|
||||||
<button button id="create-form-btn" type="submit" class="justify-center rounded-md bg-indigo-600 px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600" hx-get="/room/createform" hx-swap="outerHTML">SHOW ROOM CREATE FORM</button>
|
<button button id="create-form-btn" type="submit" class="justify-center rounded-md bg-indigo-600 px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600" hx-get="/room/createform" hx-swap="outerHTML">SHOW ROOM CREATE FORM</button>
|
||||||
|
@ -79,13 +79,6 @@ func HandleFrontLogin(w http.ResponseWriter, r *http.Request) {
|
|||||||
// make sure username does not exists
|
// make sure username does not exists
|
||||||
cleanName := utils.RemoveSpacesFromStr(username)
|
cleanName := utils.RemoveSpacesFromStr(username)
|
||||||
clearPass := utils.RemoveSpacesFromStr(password)
|
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
|
// check if that user was already in db
|
||||||
userstate, err := repo.PlayerGetByName(r.Context(), cleanName)
|
userstate, err := repo.PlayerGetByName(r.Context(), cleanName)
|
||||||
if err != nil || userstate == nil {
|
if err != nil || userstate == nil {
|
||||||
@ -99,6 +92,13 @@ func HandleFrontLogin(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
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)
|
http.SetCookie(w, cookie)
|
||||||
fi := &models.FullInfo{
|
fi := &models.FullInfo{
|
||||||
State: userstate,
|
State: userstate,
|
||||||
@ -190,3 +190,23 @@ func makeCookie(username string, remote string) (*http.Cookie, error) {
|
|||||||
}
|
}
|
||||||
return cookie, nil
|
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)
|
||||||
|
}
|
||||||
|
1
main.go
1
main.go
@ -69,6 +69,7 @@ func ListenToRequests(port string) *http.Server {
|
|||||||
mux.HandleFunc("GET /ping", handlers.HandlePing)
|
mux.HandleFunc("GET /ping", handlers.HandlePing)
|
||||||
mux.HandleFunc("GET /", handlers.HandleHome)
|
mux.HandleFunc("GET /", handlers.HandleHome)
|
||||||
mux.HandleFunc("POST /login", handlers.HandleFrontLogin)
|
mux.HandleFunc("POST /login", handlers.HandleFrontLogin)
|
||||||
|
mux.HandleFunc("GET /signout", handlers.HandleSignout)
|
||||||
mux.HandleFunc("POST /join-team", handlers.HandleJoinTeam)
|
mux.HandleFunc("POST /join-team", handlers.HandleJoinTeam)
|
||||||
mux.HandleFunc("GET /end-turn", handlers.HandleEndTurn)
|
mux.HandleFunc("GET /end-turn", handlers.HandleEndTurn)
|
||||||
mux.HandleFunc("POST /room-create", handlers.HandleCreateRoom)
|
mux.HandleFunc("POST /room-create", handlers.HandleCreateRoom)
|
||||||
|
Reference in New Issue
Block a user