func CreateProject(w http.ResponseWriter, r *http.Request) { title := r.FormValue("title") if title == "" { response.ClientError(w, http.StatusBadRequest) return } user := context.Get(r, "user").(store.User) tagline := r.FormValue("tagline") description := r.FormValue("description") // basic project info projectID, err := store.CreateProject(map[string]string{ "authorID": user.IDStr(), "title": title, "tagline": tagline, "description": description, }) if err != nil { response.ServerError(w, err) return } var ok bool // add author to project user list if err = store.AddMember(projectID, user.ID()); err != nil { goto error } // image if ok, err = store.SaveProjectImage(w, r, projectID); err != nil || !ok { goto error } response.OK(w, projectID) return error: if err := store.DeleteProject(projectID); err != nil { debug.Warn(err) } response.ServerError(w, err) }
func DeleteProject(w http.ResponseWriter, r *http.Request) { var parser store.Parser projectID := parser.Int(r.FormValue("projectID")) if parser.Err != nil { response.ClientError(w, http.StatusBadRequest) return } user := context.Get(r, "user").(store.User) if !user.IsAuthor(projectID) { response.ClientError(w, http.StatusUnauthorized) return } if err := store.DeleteProject(projectID); err != nil { response.ServerError(w, err) return } }