diff options
Diffstat (limited to 'src/user/routes.go')
| -rw-r--r-- | src/user/routes.go | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/user/routes.go b/src/user/routes.go index d8c8d43..b163fb7 100644 --- a/src/user/routes.go +++ b/src/user/routes.go @@ -5,6 +5,8 @@ import ( "net/http" "github.com/go-playground/validator/v10" + "github.com/volatiletech/sqlboiler/v4/boil" + "gitlab.com/alexkavon/newsstand/src/models" "gitlab.com/alexkavon/newsstand/src/server" "gitlab.com/alexkavon/newsstand/src/sessions" ) @@ -64,33 +66,33 @@ func Store(s *server.Server) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { r.ParseForm() - user := &User{ - Db: s.Db, - Username: r.PostFormValue("username"), - Secret: r.PostFormValue("secret"), - Email: r.PostFormValue("email"), - } + var user models.User + user.Username = r.PostFormValue("username") + user.Secret = r.PostFormValue("secret") + user.Email = r.PostFormValue("email") // Validate User Input v := validator.New() err := v.Struct(user) if err != nil { - log.Println("Validator failed", err.(validator.ValidationErrors)) + log.Fatal("Validator failed", err.(validator.ValidationErrors)) } // Hash secret - err = user.HashSecret() + secret := &Secret{Raw: user.Secret} + err = secret.HashSecret() if err != nil { - log.Println("Hash failure", err) + log.Fatal("Hash failure", err) } + user.Secret = secret.Hash() // Store user - err = user.Insert() + err = user.Insert(r.Context(), s.Db.ToSqlDb(), boil.Infer()) if err != nil { - log.Println("Insert Error", err) + log.Fatal("Insert Error", err) } // Send email validation // Create cookie session - sessions.NewSession(w, sessions.SessionValues{"uid": user.Id, "username": user.Username}) + sessions.NewSession(w, sessions.SessionValues{"uid": user.ID, "username": user.Username}) // Redirect to user profile http.Redirect(w, r, "/u/me", http.StatusSeeOther) } |
