package routing import ( "lishwist/http/api/db" "lishwist/http/rsvp" "net/http" ) func ExpectUser(next func(*db.User, http.Header, *rsvp.Request) rsvp.Response) rsvp.HandlerFunc { return func(w http.Header, r *rsvp.Request) rsvp.Response { session := r.GetSession() username, ok := session.GetValue("username").(string) if !ok { return rsvp.Error(http.StatusInternalServerError, "Something went wrong.").Log("Failed to get username from session") } user, err := db.GetUserByName(username) if err != nil { return rsvp.Error(http.StatusInternalServerError, "Something went wrong.").Log("Failed to get user %q: %s", username, err) } return next(user, w, r) } }