From 45c541ee7c49cad52872b177d9b45100e13c353f Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Fri, 27 Jun 2025 12:37:07 -0400 Subject: [PATCH] User registration now works. --- api/auth.go | 6 +++--- api/controllers.go | 20 ++++++++++++++++++++ data/models.go | 2 +- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/api/auth.go b/api/auth.go index f15ec09..903721d 100644 --- a/api/auth.go +++ b/api/auth.go @@ -46,9 +46,9 @@ func LoginUser(result *data.User, login *data.Login) (bool, error) { return login.Username == result.Username && pass_good == nil, nil } -func SetUserPassword(password string, user *data.User) error { - hashed, err := bcrypt.GenerateFromPassword([]byte(password), 12) - if err == nil { return err } +func SetUserPassword(user *data.User) error { + hashed, err := bcrypt.GenerateFromPassword([]byte(user.Password), 12) + if err != nil { return err } user.Password = string(hashed) return nil diff --git a/api/controllers.go b/api/controllers.go index 0ed1127..77c8cee 100644 --- a/api/controllers.go +++ b/api/controllers.go @@ -49,6 +49,23 @@ func GetApiStreamIdLinks(c *fiber.Ctx) error { return IfErrNil(err, c) } +func PostApiRegister(c *fiber.Ctx) error { + user, err := ReceivePost[data.User](c) + if err != nil { return IfErrNil(err, c) } + + err = SetUserPassword(user) + if err != nil { return IfErrNil(err, c) } + + sql, args, err := sq.Insert("user"). + Columns("username", "email", "password"). + Values(user.Username, user.Email, user.Password).ToSql() + + err = data.Insert(err, sql, args...) + if err != nil { return IfErrNil(err, c) } + + return c.Redirect("/login/") +} + func PostApiLogin(c *fiber.Ctx) error { var user data.User @@ -84,6 +101,8 @@ func PostApiLink(c *fiber.Ctx) error { Values(link.StreamId, link.Url, link.Description).ToSql() err = data.Insert(err, sql, args...) + if(err != nil) { goto fail } + return c.Redirect("/live/") fail: @@ -99,6 +118,7 @@ func Setup(app *fiber.App) { app.Get("/api/stream/:id/links", GetApiStreamIdLinks) app.Post("/api/login", PostApiLogin) app.Post("/api/link", PostApiLink) + app.Post("/api/register", PostApiRegister) app.Get("/test/:name/", func (c *fiber.Ctx) error { return c.Render(c.Params("name"), fiber.Map{ diff --git a/data/models.go b/data/models.go index 7fa90b2..a5f1c3b 100644 --- a/data/models.go +++ b/data/models.go @@ -7,7 +7,7 @@ type Login struct { type User struct { Username string `db:"username" validate:"required"` - Email string `db:"email" validate:"required email"` + Email string `db:"email" validate:"required,email"` Password string `db:"password" validate:"required"` }