func createSession(res http.ResponseWriter, req *http.Request, user User) { ctx := appengine.NewContext(req) // SET COOKIE id, _ := uuid.NewV4() cookie := &http.Cookie{ Name: "session", Value: id.String(), Path: "/", // UNCOMMENT WHEN DEPLOYED: // Secure: true, // HttpOnly: true, } http.SetCookie(res, cookie) // SET MEMCACHE session data (sd) json, err := json.Marshal(user) if err != nil { log.Errorf(ctx, "error marshalling during user creation: %v", err) http.Error(res, err.Error(), 500) return } sd := memcache.Item{ Key: id.String(), Value: json, // Expiration: time.Duration(20*time.Minute), Expiration: time.Duration(20 * time.Second), } memcache.Set(ctx, &sd) }
func createUser(res http.ResponseWriter, req *http.Request, _ httprouter.Params) { ctx := appengine.NewContext(req) user := User{ Email: req.FormValue("email"), UserName: req.FormValue("userName"), Password: req.FormValue("password"), } key := datastore.NewKey(ctx, "Users", user.UserName, 0, nil) key, err := datastore.Put(ctx, key, &user) if err != nil { log.Errorf(ctx, "error adding todo: %v", err) http.Error(res, err.Error(), 500) return } createSession(res, req, user) // redirect http.Redirect(res, req, "/", 302) }