User registration now works.

main
Zed A. Shaw 15 hours ago
parent eaaf309260
commit 45c541ee7c
  1. 6
      api/auth.go
  2. 20
      api/controllers.go
  3. 2
      data/models.go

@ -46,9 +46,9 @@ func LoginUser(result *data.User, login *data.Login) (bool, error) {
return login.Username == result.Username && pass_good == nil, nil return login.Username == result.Username && pass_good == nil, nil
} }
func SetUserPassword(password string, user *data.User) error { func SetUserPassword(user *data.User) error {
hashed, err := bcrypt.GenerateFromPassword([]byte(password), 12) hashed, err := bcrypt.GenerateFromPassword([]byte(user.Password), 12)
if err == nil { return err } if err != nil { return err }
user.Password = string(hashed) user.Password = string(hashed)
return nil return nil

@ -49,6 +49,23 @@ func GetApiStreamIdLinks(c *fiber.Ctx) error {
return IfErrNil(err, c) 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 { func PostApiLogin(c *fiber.Ctx) error {
var user data.User var user data.User
@ -84,6 +101,8 @@ func PostApiLink(c *fiber.Ctx) error {
Values(link.StreamId, link.Url, link.Description).ToSql() Values(link.StreamId, link.Url, link.Description).ToSql()
err = data.Insert(err, sql, args...) err = data.Insert(err, sql, args...)
if(err != nil) { goto fail }
return c.Redirect("/live/") return c.Redirect("/live/")
fail: fail:
@ -99,6 +118,7 @@ func Setup(app *fiber.App) {
app.Get("/api/stream/:id/links", GetApiStreamIdLinks) app.Get("/api/stream/:id/links", GetApiStreamIdLinks)
app.Post("/api/login", PostApiLogin) app.Post("/api/login", PostApiLogin)
app.Post("/api/link", PostApiLink) app.Post("/api/link", PostApiLink)
app.Post("/api/register", PostApiRegister)
app.Get("/test/:name/", func (c *fiber.Ctx) error { app.Get("/test/:name/", func (c *fiber.Ctx) error {
return c.Render(c.Params("name"), fiber.Map{ return c.Render(c.Params("name"), fiber.Map{

@ -7,7 +7,7 @@ type Login struct {
type User struct { type User struct {
Username string `db:"username" validate:"required"` 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"` Password string `db:"password" validate:"required"`
} }

Loading…
Cancel
Save