Feat: enter room: login with link
This commit is contained in:
@ -60,6 +60,7 @@ func HandleFrontLogin(w http.ResponseWriter, r *http.Request) {
|
||||
abortWithError(w, msg)
|
||||
return
|
||||
}
|
||||
roomID := r.PostFormValue("room_id")
|
||||
// make sure username does not exists
|
||||
cleanName := utils.RemoveSpacesFromStr(username)
|
||||
// login user
|
||||
@ -75,19 +76,37 @@ func HandleFrontLogin(w http.ResponseWriter, r *http.Request) {
|
||||
abortWithError(w, err.Error())
|
||||
return
|
||||
}
|
||||
// state := models.MakeTestState(cleanName)
|
||||
// state.State.Username = cleanName
|
||||
userstate := models.InitState(cleanName)
|
||||
fi := &models.FullInfo{
|
||||
State: userstate,
|
||||
}
|
||||
fi.List = listPublicRooms()
|
||||
// save state to cache
|
||||
if err := saveState(cleanName, userstate); err != nil {
|
||||
// if err := saveFullInfo(fi); err != nil {
|
||||
log.Error("failed to save state", "error", err)
|
||||
abortWithError(w, err.Error())
|
||||
return
|
||||
// check if room_id provided and exists
|
||||
if roomID != "" {
|
||||
log.Debug("got room_id in login", "room_id", roomID)
|
||||
room, err := getRoomByID(roomID)
|
||||
if err != nil {
|
||||
abortWithError(w, err.Error())
|
||||
return
|
||||
}
|
||||
room.PlayerList = append(room.PlayerList, fi.State.Username)
|
||||
fi.State.RoomID = room.ID
|
||||
fi.Room = room
|
||||
fi.List = nil
|
||||
// save full info instead
|
||||
if err := saveFullInfo(fi); err != nil {
|
||||
abortWithError(w, err.Error())
|
||||
return
|
||||
}
|
||||
} else {
|
||||
log.Debug("no room_id in login")
|
||||
fi.List = listPublicRooms()
|
||||
// save state to cache
|
||||
if err := saveState(cleanName, userstate); err != nil {
|
||||
// if err := saveFullInfo(fi); err != nil {
|
||||
log.Error("failed to save state", "error", err)
|
||||
abortWithError(w, err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
tmpl.ExecuteTemplate(w, "base", fi)
|
||||
}
|
||||
|
Reference in New Issue
Block a user