コード例 #1
0
ファイル: main.go プロジェクト: 13pinj/todoapp
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,
	})
}
コード例 #2
0
ファイル: users.go プロジェクト: 13pinj/todoapp
// 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, "/")
}
コード例 #3
0
ファイル: users.go プロジェクト: 13pinj/todoapp
// 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, "/")
}
コード例 #4
0
ファイル: todos.go プロジェクト: 13pinj/todoapp
// 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",
	})
}
コード例 #5
0
ファイル: todos.go プロジェクト: 13pinj/todoapp
// 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())
}
コード例 #6
0
ファイル: todos.go プロジェクト: 13pinj/todoapp
// 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())
}
コード例 #7
0
ファイル: routes.go プロジェクト: 13pinj/todoapp
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)
}