func roomPOST(c *gin.Context) { roomid := c.Param("roomid") userid := c.PostForm("user") message := c.PostForm("message") room(roomid).Submit(userid + ": " + message) c.JSON(200, gin.H{ "status": "success", "message": message, }) }
// Login выполняет вход, используя параметры POST-запроса // name и password. // Пользователей, уже выполнивших вход, она перенаправляет на главную, // не перезаписывая сессию. // POST /login func Login(c *gin.Context) { _, ok := user.FromContext(c) if ok { ctl.Redirect(c, "/") return } name := c.PostForm("name") pas := c.PostForm("password") _, ok = user.Login(c, name, pas) if !ok { ctl.RenderHTML(c, "login.tmpl", gin.H{"Errors": []string{"Ошибка авторизации"}}) return } ctl.Redirect(c, "/") }
// Register регистрирует нового пользователя, используя параметры POST-запроса // name и password, и выполняет вход под его именем. // Пользователей, уже выполнивших вход, она перенаправляет на главную, // не перезаписывая сессию. // POST /register func Register(c *gin.Context) { _, ok := user.FromContext(c) if ok { ctl.Redirect(c, "/") return } name := c.PostForm("name") pas := c.PostForm("password") us, errs := user.Register(name, pas) if errs != nil { ctl.RenderHTML(c, "register.tmpl", gin.H{"Errors": errs}) return } us.AutoLogin(c) ctl.Redirect(c, "/") }
// UpdateList изменяет заголовок списка на тот, который был получен // POST-параметре title и перенаправляет на страницу этого списка. // POST /list/:id/update func UpdateList(c *gin.Context) { l, ok := getlist(c) if !ok { return } l.Title = c.PostForm("title") err := l.Save() if err != nil { ctl.RenderJSON(c, gin.H{ "status": "error", "error": err.Error(), }) return } ctl.RenderJSON(c, gin.H{ "status": "success", }) }
// CreateList создает новый список дел с заголовком из POST-параметра title // и перенаправляет на страницу этого списка. // POST /list-create func CreateList(c *gin.Context) { u, ok := user.FromContext(c) if !ok { ctl.Render403(c) return } l := todolist.New(c.PostForm("title")) l.UserID = u.ID err := l.Save() if err != nil { u.LoadLists() ctl.RenderHTML(c, "todos_index.tmpl", gin.H{ "Lists": u.Lists, "AlertError": err.Error(), }) return } ctl.Redirect(c, l.Path()) }
// CreateTask создает новое задание в списке с текстом // из POST-параметра label и перенаправляет на страницу списка. // POST /list/:id/add func CreateTask(c *gin.Context) { l, ok := getlist(c) if !ok { return } err := l.Add(c.PostForm("label")) if err != nil { u, _ := user.FromContext(c) u.LoadLists() l.LoadTodos() ctl.RenderHTML(c, "todos_show.tmpl", gin.H{ "List": l, "AlertError": err.Error(), "Lists": u.Lists, }) return } ctl.Redirect(c, l.Path()) }
func roomPOST(c *gin.Context) { roomid := c.Param("roomid") nick := c.Query("nick") message := c.PostForm("message") message = strings.TrimSpace(message) validMessage := len(message) > 1 && len(message) < 200 validNick := len(nick) > 1 && len(nick) < 14 if !validMessage || !validNick { c.JSON(400, gin.H{ "status": "failed", "error": "the message or nickname is too long", }) return } post := gin.H{ "nick": html.EscapeString(nick), "message": html.EscapeString(message), } messages.Add("inbound", 1) room(roomid).Submit(post) c.JSON(200, post) }