diff options
Diffstat (limited to 'src/user/routes.go')
| -rw-r--r-- | src/user/routes.go | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/user/routes.go b/src/user/routes.go index 7cbd3fb..5399418 100644 --- a/src/user/routes.go +++ b/src/user/routes.go @@ -92,10 +92,26 @@ func LoginForm(s *server.Server) http.HandlerFunc { func Login(s *server.Server) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { + r.ParseForm() // look up the user from the db + user, err := models.Users(models.UserWhere.Username.EQ(r.PostFormValue("username"))).One(r.Context(), s.Db.ToSqlDb()) + if err != nil { + log.Fatal(err) + } + // hash the form secret // compare form hash to db hash + valid, err := compareSecretToHash(r.PostFormValue("secret"), user.Secret) + if err != nil { + log.Fatal(err) + } + if !valid { + log.Fatal("Incorrect login credentials TODO resolve with compareSecretToHash err") + } + // login or dont + sessions.NewSession(w, sessions.SessionValues{"uid": user.ID, "username": user.Username}) + http.Redirect(w, r, "/u/me", http.StatusSeeOther) } } |
