54 lines
1.1 KiB
Go

package controllers
import (
"fmt"
"net/http"
"strings"
"git.kealoha.me/lks/lenslocked/models"
"git.kealoha.me/lks/lenslocked/templates"
"git.kealoha.me/lks/lenslocked/views"
)
type Users struct {
Templates struct {
New Template
}
UserService *models.UserService
}
func (u Users) New(w http.ResponseWriter, r *http.Request) {
var data struct {
Email string
}
data.Email = r.FormValue("email")
u.Templates.New.Execute(w, data)
}
func (u Users) Create(w http.ResponseWriter, r *http.Request) {
email := r.FormValue("email")
password := r.FormValue("password")
user, err := u.UserService.Create(email, password)
if err != nil {
fmt.Println(err)
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
return
}
fmt.Fprintf(w, "User created: %+v", user)
}
func WithStaticTemplate(user_service *models.UserService, templatePath ...string) Users {
tpl := views.Must(views.FromFS(templates.FS, templatePath...))
var testWriter strings.Builder
err := tpl.ExecuteWriter(&testWriter, nil)
if err != nil {
panic(err)
}
u := Users{}
u.Templates.New = tpl
u.UserService = user_service
return u
}