fixed changing of pointers

This commit is contained in:
Hazel Noack
2025-06-30 14:23:13 +02:00
parent 1e0a4c6317
commit 9c8b8177ad
6 changed files with 87 additions and 70 deletions

View File

@@ -9,7 +9,10 @@ import (
)
func CreateUser(c echo.Context) error {
session := game.GetSession(c.Param("session"))
session, err := game.GetSession(c.Param("session"))
if err != nil {
return c.String(http.StatusBadRequest, err.Error())
}
type BodyContent struct {
Name string
@@ -17,12 +20,15 @@ func CreateUser(c echo.Context) error {
}
var bodyContent BodyContent
err := c.Bind(&bodyContent)
err = c.Bind(&bodyContent)
if err != nil {
return c.String(http.StatusBadRequest, err.Error())
}
pub, _ := base64.StdEncoding.DecodeString(bodyContent.PublicKey)
pub, err := base64.StdEncoding.DecodeString(bodyContent.PublicKey)
if err != nil {
return c.String(http.StatusBadRequest, err.Error())
}
user := game.NewUser(bodyContent.Name, pub)
session.AddUser(user)

View File

@@ -1,40 +1,29 @@
package rest_handler
import (
"bytes"
"fmt"
"io"
"net/http"
"gitea.elara.ws/Hazel/hangman/internal/game"
"github.com/labstack/echo/v4"
)
func GuessLetter(c echo.Context) error {
session := game.GetSession(c.Param("session"))
session, user, err := GetData(c)
sig := c.Request().Header.Get("signature")
body, _ := io.ReadAll(c.Request().Body)
u := session.VerifySignature(sig, body)
if u == nil {
return c.String(http.StatusBadRequest, "This user was not fount in the current session.")
if err != nil {
return c.String(http.StatusBadRequest, err.Error())
}
if !session.CurrentUser.PublicKey.Equal(u.PublicKey) {
return c.String(http.StatusBadRequest, "It's not the turn of user "+u.Name+". It's the turn of "+session.CurrentUser.Name+".")
if session.CurrentUser != user {
return c.String(http.StatusBadRequest, "It's not the turn of user "+user.Name+". It's the turn of "+session.CurrentUser.Name+".")
}
c.Request().Body = io.NopCloser(bytes.NewBuffer(body))
type BodyContent struct {
Guess string
}
var bodyContent BodyContent
err := c.Bind(&bodyContent)
err = c.Bind(&bodyContent)
if err != nil {
fmt.Println(err)
return c.String(http.StatusBadRequest, err.Error())
}

View File

@@ -0,0 +1,30 @@
package rest_handler
import (
"bytes"
"io"
"gitea.elara.ws/Hazel/hangman/internal/game"
"github.com/labstack/echo/v4"
)
func GetData(c echo.Context) (*game.Session, *game.User, error) {
session, err := game.GetSession(c.Param("session"))
if err != nil {
return session, nil, err
}
sig := c.Request().Header.Get("signature")
body, _ := io.ReadAll(c.Request().Body)
user, err := session.VerifySignature(sig, body)
if err != nil {
return session, user, err
}
c.Request().Body = io.NopCloser(bytes.NewBuffer(body))
// fmt.Printf("user %v:\t%p\n", user.Name, user)
return session, user, nil
}

View File

@@ -1,8 +1,6 @@
package rest_handler
import (
"fmt"
"io"
"net/http"
"gitea.elara.ws/Hazel/hangman/internal/game"
@@ -10,30 +8,17 @@ import (
)
func TestAuth(c echo.Context) error {
session := game.GetSession(c.Param("session"))
type TestResults struct {
SignatureValid bool
User *string
Session *game.Session
User *game.User
Error error
}
sig := c.Request().Header.Get("signature")
body, _ := io.ReadAll(c.Request().Body)
fmt.Println(sig)
session, user, err := GetData(c)
u := session.VerifySignature(sig, body)
var resp TestResults
if u == nil {
resp = TestResults{
SignatureValid: false,
User: nil,
}
} else {
resp = TestResults{
SignatureValid: true,
User: &u.Name,
}
}
return c.JSON(http.StatusOK, resp)
return c.JSON(http.StatusOK, TestResults{
Session: session,
User: user,
Error: err,
})
}