Add Sign in page

This commit is contained in:
2024-08-07 19:09:34 -04:00
parent 7d234c5aad
commit 2d53824194
5 changed files with 104 additions and 18 deletions

View File

@@ -11,7 +11,7 @@ type Template interface {
Execute(w http.ResponseWriter, data interface{})
}
func StaticTemplate(templatePath ...string) http.HandlerFunc {
func StaticController(templatePath ...string) http.HandlerFunc {
tpl := views.Must(views.FromFS(templates.FS, templatePath...))
var testWriter strings.Builder

View File

@@ -12,20 +12,21 @@ import (
type Users struct {
Templates struct {
New Template
Signup Template
Signin Template
}
UserService *models.UserService
}
func (u Users) New(w http.ResponseWriter, r *http.Request) {
func (u Users) GetSignup(w http.ResponseWriter, r *http.Request) {
var data struct {
Email string
}
data.Email = r.FormValue("email")
u.Templates.New.Execute(w, data)
u.Templates.Signup.Execute(w, data)
}
func (u Users) Create(w http.ResponseWriter, r *http.Request) {
func (u Users) PostSignup(w http.ResponseWriter, r *http.Request) {
email := r.FormValue("email")
password := r.FormValue("password")
user, err := u.UserService.Create(email, password)
@@ -37,17 +38,35 @@ func (u Users) Create(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "User created: %+v", user)
}
func WithStaticTemplate(user_service *models.UserService, templatePath ...string) Users {
tpl := views.Must(views.FromFS(templates.FS, templatePath...))
func (u Users) GetSignin(w http.ResponseWriter, r *http.Request) {
var data struct {
Email string
}
data.Email = r.FormValue("email")
u.Templates.Signin.Execute(w, data)
}
func WithTemplates(user_service *models.UserService, signup Template, signin Template) Users {
u := Users{}
u.Templates.Signup = signup
u.Templates.Signin = signin
u.UserService = user_service
return u
}
func Default(user_service *models.UserService, templatePath ...string) Users {
signup_tpl := views.Must(views.FromFS(templates.FS, "signup.gohtml", "tailwind.gohtml"))
signin_tpl := views.Must(views.FromFS(templates.FS, "signin.gohtml", "tailwind.gohtml"))
var testWriter strings.Builder
err := tpl.ExecuteWriter(&testWriter, nil)
err := signup_tpl.ExecuteWriter(&testWriter, nil)
if err != nil {
panic(err)
}
err = signin_tpl.ExecuteWriter(&testWriter, nil)
if err != nil {
panic(err)
}
u := Users{}
u.Templates.New = tpl
u.UserService = user_service
return u
return WithTemplates(user_service, signup_tpl, signin_tpl)
}