Fix: session to create player only if does not exist
This commit is contained in:
		| @@ -90,6 +90,7 @@ func HandleFrontLogin(w http.ResponseWriter, r *http.Request) { | ||||
| 	// userstate, err := loadState(cleanName) | ||||
| 	userstate, err := repo.PlayerGetByName(r.Context(), cleanName) | ||||
| 	if err != nil || userstate == nil { | ||||
| 		log.Debug("making new player", "error", err, "state", userstate) | ||||
| 		userstate = models.InitPlayer(cleanName) | ||||
| 		makeplayer = true | ||||
| 	} | ||||
| @@ -106,7 +107,7 @@ func HandleFrontLogin(w http.ResponseWriter, r *http.Request) { | ||||
| 			return | ||||
| 		} | ||||
| 		// room.PlayerList = append(room.PlayerList, fi.State.Username) | ||||
| 		fi.Room = room | ||||
| 		// fi.Room = room | ||||
| 		fi.List = nil | ||||
| 		fi.State.RoomID = &room.ID | ||||
| 		if err := repo.PlayerSetRoomID(r.Context(), room.ID, fi.State.Username); err != nil { | ||||
| @@ -181,11 +182,14 @@ func makeCookie(username string, remote string) (*http.Cookie, error) { | ||||
| 		cookie.Secure = false | ||||
| 		log.Info("changing cookie domain", "domain", cookie.Domain) | ||||
| 	} | ||||
| 	// make player first, since username is fk to players table | ||||
| 	player := models.InitPlayer(username) | ||||
| 	if err := repo.PlayerAdd(context.Background(), player); err != nil { | ||||
| 		slog.Error("failed to create player", "username", username) | ||||
| 		return nil, err | ||||
| 	player, err := repo.PlayerGetByName(context.Background(), username) | ||||
| 	if err != nil || player == nil { | ||||
| 		// make player first, since username is fk to players table | ||||
| 		player = models.InitPlayer(username) | ||||
| 		if err := repo.PlayerAdd(context.Background(), player); err != nil { | ||||
| 			slog.Error("failed to create player", "username", username) | ||||
| 			return nil, err | ||||
| 		} | ||||
| 	} | ||||
| 	if err := repo.SessionCreate(context.Background(), session); err != nil { | ||||
| 		return nil, err | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Grail Finder
					Grail Finder