func GetArticle(w app.ResponseWriter, r *app.Request) { article_id, err := strconv.Atoi(r.PathParams["article_id"]) if err == nil { article := models.Article{} article.Find(article_id) if article.ID != 0 { w.WriteJson(article) return } } logging.Logger.Error(fmt.Sprintf("Error: %s", err)) w.WriteHeader(404) w.WriteJson(map[string]string{"error": "article no found"}) }
func PostArticle(w app.ResponseWriter, r *app.Request) { user := r.Env["user"].(*models.User) title, markdown, category, html := generateArticleContent(r) if title == "" { w.WriteHeader(400) w.WriteJson(map[string]string{"error": "missing stuff"}) return } // create article article := models.Article{Title: title, Content: string(html), Markdown: markdown} user.AddArticle(&article) category.AddArticle(&article) article.Create() w.WriteJson(article) }
func ModifyArticle(w app.ResponseWriter, r *app.Request) { article_id, err := strconv.Atoi(r.PathParams["article_id"]) if err == nil { title, markdown, _, html := generateArticleContent(r) article := models.Article{} article.Find(article_id) if article.ID != 0 { article.Title = title article.Markdown = markdown article.Content = string(html) // category.AddArticle(&article) article.Save() w.WriteJson(article) return } } logging.Logger.Error(fmt.Sprintf("Error: %s", err)) w.WriteHeader(404) w.WriteJson(map[string]string{"error": "article no found"}) }
func (self *authMiddware) LoginController(w app.ResponseWriter, r *app.Request) { var tokenString string data := jsonLoginDate{} // Decode Json from request err := r.DecodeJsonPayload(&data) if err != nil { logging.Logger.Error(fmt.Sprintf("Error: %s", err)) w.WriteHeader(500) w.WriteJson(map[string]string{"error": fmt.Sprintf("Error: %s", err)}) return } // extract email := data.Email password := data.Password // use email get user user := models.User{} user.Find(email) // validate password generate jwt tokenString // user jwt we can ignore CRSF if user.Validate(password) { user.Last_seen = time.Now().UTC() user.Save() token := jwt.New(jwt.SigningMethodHS256) token.Claims["email"] = user.Email token.Claims["role"] = user.Role token.Claims["exp"] = time.Now().Add(time.Hour * 6).UTC().Unix() tokenString, err = token.SignedString(self.signingKey) if err != nil { logging.Logger.Error(fmt.Sprintf("Error: %s", err)) w.WriteHeader(500) w.WriteJson(map[string]string{"error": fmt.Sprintf("Error: %s", err)}) } w.WriteJson(responseUserData{user.Nickname, tokenString, user.Role}) } else { w.WriteHeader(400) w.WriteJson(map[string]string{"error": "email or password incorrect"}) } }