Files
fiber-sessions/app/handlers/login.go
2024-02-06 16:21:00 +01:00

54 lines
1.2 KiB
Go

package handlers
import (
"fiber-sessions/app/data"
"fiber-sessions/app/router/requests"
"fiber-sessions/app/templates"
"github.com/gofiber/fiber/v2"
)
var pcLogin templates.PageContext = templates.PageContext{
Title: "Login",
ActivePage: "login",
}
func Login(ctx *fiber.Ctx) error {
request := requests.NewRequest(ctx, data.UsersStorage)
Render(ctx, templates.RenderLogin(request, pcLogin))
return nil
}
func LoginSubmit(ctx *fiber.Ctx) error {
request := requests.NewRequest(ctx, data.UsersStorage)
content := templates.LoginFormValidationContent{
Validated: true,
Username: ctx.FormValue("username"),
Password: ctx.FormValue("password"),
}
hasError := false
if len(content.Username) == 0 {
content.UsernameError = "Username can not be empty."
hasError = true
}
if len(content.Password) == 0 {
content.PasswordError = "Password can not be empty."
hasError = true
}
if !hasError {
err := request.LoginUser(content.Username, content.Password)
if err == nil {
ctx.Set("HX-Location", "/")
return nil
}
content.LoginError = "Invalid username or password"
}
Render(ctx, templates.LoginFormContent(content))
return nil
}