// GetContext wraps each request in a function which fills in the context for a given request. // This includes setting the User and Session keys and values as necessary for use in later functions. func GetContext(handler http.Handler) http.HandlerFunc { // Set the context here return func(w http.ResponseWriter, r *http.Request) { // Parse the request form err := r.ParseForm() if err != nil { http.Error(w, "Error parsing request", http.StatusInternalServerError) } // Set the context appropriately here. // Set the session session, _ := auth.Store.Get(r, "gophish") // Put the session in the context so that ctx.Set(r, "session", session) if id, ok := session.Values["id"]; ok { u, err := models.GetUser(id.(int64)) if err != nil { ctx.Set(r, "user", nil) } else { ctx.Set(r, "user", u) } } else { ctx.Set(r, "user", nil) } handler.ServeHTTP(w, r) // Remove context contents ctx.Clear(r) } }
func (s *ControllersSuite) SetupSuite() { config.Conf.DBPath = ":memory:" err := models.Setup() if err != nil { s.T().Fatalf("Failed creating database: %v", err) } s.Nil(err) // Setup the admin server for use in testing as.Config.Addr = config.Conf.AdminURL as.Start() // Get the API key to use for these tests u, err := models.GetUser(1) s.Nil(err) s.ApiKey = u.ApiKey }