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
	 Grail Finder
					Grail Finder