get player id with middleware, not session
This commit is contained in:
parent
438c70b41b
commit
ca4823e80b
@ -61,7 +61,7 @@ func WithSession(sessions player.RowQuerier) func(http.Handler) http.Handler {
|
||||
}
|
||||
}
|
||||
|
||||
// Session returns the session ID set by WithSession in the request context.
|
||||
func Session(ctx context.Context) player.Session {
|
||||
return value[player.Session](ctx)
|
||||
// ReqPlayer returns the session ID set by WithSession in the request context.
|
||||
func ReqPlayer(ctx context.Context) player.ID {
|
||||
return value[player.ID](ctx)
|
||||
}
|
||||
|
19
server.go
19
server.go
@ -135,31 +135,20 @@ func (s *Server) Login(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
func (s *Server) Me(w http.ResponseWriter, r *http.Request) {
|
||||
id := serve.Session(r.Context())
|
||||
if id == (player.Session{}) {
|
||||
id := serve.ReqPlayer(r.Context())
|
||||
if id == (player.ID{}) {
|
||||
panic("missing player ID")
|
||||
}
|
||||
p, err := player.FromSession(r.Context(), s.sessions, id, time.Now())
|
||||
if err != nil {
|
||||
panic("session with no player id: " + err.Error())
|
||||
}
|
||||
q := struct {
|
||||
ID player.ID `json:"id"`
|
||||
}{p}
|
||||
}{id}
|
||||
json.NewEncoder(w).Encode(q)
|
||||
}
|
||||
|
||||
// Queue connects players to games. The connection immediately upgrades.
|
||||
// This handler MUST be wrapped in [serve.WithPlayerID].
|
||||
func (s *Server) Queue(w http.ResponseWriter, r *http.Request) {
|
||||
id := serve.Session(r.Context())
|
||||
if id == (player.Session{}) {
|
||||
panic("missing player ID")
|
||||
}
|
||||
p, err := player.FromSession(r.Context(), s.sessions, id, time.Now())
|
||||
if p == (player.ID{}) {
|
||||
panic("session with no player id: " + err.Error())
|
||||
}
|
||||
p := serve.ReqPlayer(r.Context())
|
||||
person, err := s.accept(w, r, p)
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||
|
Loading…
Reference in New Issue
Block a user