htmgo/examples/simple-auth/partials/user.go

63 lines
1.1 KiB
Go
Raw Normal View History

2024-10-20 12:48:58 +00:00
package partials
import (
"github.com/maddalax/htmgo/framework/h"
"simpleauth/internal/user"
"simpleauth/ui"
)
func RegisterUser(ctx *h.RequestContext) *h.Partial {
if !ctx.IsHttpPost() {
return nil
}
payload := user.CreateUserRequest{
Email: ctx.FormValue("email"),
Password: ctx.FormValue("password"),
}
id, err := user.Create(
ctx,
payload,
)
if err != nil {
ctx.Response.WriteHeader(400)
return ui.SwapFormError(ctx, err.Error())
}
session, err := user.CreateSession(ctx, id)
if err != nil {
ctx.Response.WriteHeader(500)
return ui.SwapFormError(ctx, "something went wrong")
}
user.WriteSessionCookie(ctx, session)
return h.RedirectPartial("/")
}
func LoginUser(ctx *h.RequestContext) *h.Partial {
if !ctx.IsHttpPost() {
return nil
}
payload := user.LoginUserRequest{
Email: ctx.FormValue("email"),
Password: ctx.FormValue("password"),
}
_, err := user.Login(
ctx,
payload,
)
if err != nil {
ctx.Response.WriteHeader(400)
return ui.SwapFormError(ctx, err.Error())
}
return h.RedirectPartial("/")
}