54 lines
1.1 KiB
Go
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
|
|
}
|