Remove fiber ctx

This commit is contained in:
Eden Kirin
2024-02-06 19:31:37 +01:00
parent 8bafff716c
commit f6c4b3eb06
7 changed files with 35 additions and 40 deletions

View File

@ -1,20 +1,15 @@
package handlers package handlers
import ( import (
"fiber-sessions/app/data"
"fiber-sessions/app/router/requests" "fiber-sessions/app/router/requests"
"fiber-sessions/app/templates" "fiber-sessions/app/templates"
"github.com/gofiber/fiber/v2"
) )
func Home(ctx *fiber.Ctx) error { func Home(request *requests.Request) error {
request := requests.NewRequest(ctx, data.UsersStorage)
pc := templates.PageContext{ pc := templates.PageContext{
Title: "Welcome to the demo", Title: "Welcome to the demo",
ActivePage: "home", ActivePage: "home",
} }
Render(ctx, templates.Home(request, pc)) Render(request.Ctx, templates.Home(request, pc))
return nil return nil
} }

View File

@ -1,11 +1,8 @@
package handlers package handlers
import ( import (
"fiber-sessions/app/data"
"fiber-sessions/app/router/requests" "fiber-sessions/app/router/requests"
"fiber-sessions/app/templates" "fiber-sessions/app/templates"
"github.com/gofiber/fiber/v2"
) )
var pcLogin templates.PageContext = templates.PageContext{ var pcLogin templates.PageContext = templates.PageContext{
@ -13,19 +10,16 @@ var pcLogin templates.PageContext = templates.PageContext{
ActivePage: "login", ActivePage: "login",
} }
func Login(ctx *fiber.Ctx) error { func Login(request *requests.Request) error {
request := requests.NewRequest(ctx, data.UsersStorage) Render(request.Ctx, templates.RenderLogin(request, pcLogin))
Render(ctx, templates.RenderLogin(request, pcLogin))
return nil return nil
} }
func LoginSubmit(ctx *fiber.Ctx) error { func LoginSubmit(request *requests.Request) error {
request := requests.NewRequest(ctx, data.UsersStorage)
content := templates.LoginFormValidationContent{ content := templates.LoginFormValidationContent{
Validated: true, Validated: true,
Username: ctx.FormValue("username"), Username: request.Ctx.FormValue("username"),
Password: ctx.FormValue("password"), Password: request.Ctx.FormValue("password"),
} }
hasError := false hasError := false
@ -42,12 +36,12 @@ func LoginSubmit(ctx *fiber.Ctx) error {
if !hasError { if !hasError {
err := request.LoginUser(content.Username, content.Password) err := request.LoginUser(content.Username, content.Password)
if err == nil { if err == nil {
ctx.Set("HX-Location", "/") request.Ctx.Set("HX-Location", "/")
return nil return nil
} }
content.LoginError = "Invalid username or password" content.LoginError = "Invalid username or password"
} }
Render(ctx, templates.LoginFormContent(content)) Render(request.Ctx, templates.LoginFormContent(content))
return nil return nil
} }

View File

@ -1,16 +1,12 @@
package handlers package handlers
import ( import (
"fiber-sessions/app/data"
"fiber-sessions/app/router/requests" "fiber-sessions/app/router/requests"
"github.com/gofiber/fiber/v2"
) )
func Logout(ctx *fiber.Ctx) error { func Logout(request *requests.Request) error {
request := requests.NewRequest(ctx, data.UsersStorage)
request.Logout() request.Logout()
ctx.Redirect("/") request.Ctx.Redirect("/")
return nil return nil
} }

View File

@ -1,20 +1,15 @@
package handlers package handlers
import ( import (
"fiber-sessions/app/data"
"fiber-sessions/app/router/requests" "fiber-sessions/app/router/requests"
"fiber-sessions/app/templates" "fiber-sessions/app/templates"
"github.com/gofiber/fiber/v2"
) )
func ProtectedPage(ctx *fiber.Ctx) error { func ProtectedPage(request *requests.Request) error {
request := requests.NewRequest(ctx, data.UsersStorage)
pc := templates.PageContext{ pc := templates.PageContext{
Title: "Protected page", Title: "Protected page",
ActivePage: "protected-page", ActivePage: "protected-page",
} }
Render(ctx, templates.ProtectedPage(request, pc)) Render(request.Ctx, templates.ProtectedPage(request, pc))
return nil return nil
} }

View File

@ -0,0 +1,5 @@
package handlers
import "fiber-sessions/app/router/requests"
type RequestHandler = func(request *requests.Request) error

View File

@ -23,7 +23,7 @@ type UserGetter interface {
} }
type Request struct { type Request struct {
ctx *fiber.Ctx Ctx *fiber.Ctx
session *session.Session session *session.Session
User *types.User User *types.User
userGetter UserGetter userGetter UserGetter
@ -43,7 +43,7 @@ func NewRequest(ctx *fiber.Ctx, userGetter UserGetter) *Request {
} }
return &Request{ return &Request{
ctx: ctx, Ctx: ctx,
session: session, session: session,
userGetter: userGetter, userGetter: userGetter,
User: user, User: user,

View File

@ -1,7 +1,9 @@
package router package router
import ( import (
"fiber-sessions/app/data"
"fiber-sessions/app/handlers" "fiber-sessions/app/handlers"
"fiber-sessions/app/router/requests"
"fmt" "fmt"
"strings" "strings"
@ -52,12 +54,20 @@ func initLogging(app *fiber.App) {
) )
} }
func requestMaker(handler handlers.RequestHandler) fiber.Handler {
// wrap standard fiber handler and create request object
return func(ctx *fiber.Ctx) error {
request := requests.NewRequest(ctx, data.UsersStorage)
return handler(request)
}
}
func initRouter(app *fiber.App) { func initRouter(app *fiber.App) {
app.Get("/", handlers.Home) app.Get("/", requestMaker(handlers.Home))
app.Get("/login", handlers.Login) app.Get("/login", requestMaker(handlers.Login))
app.Post("/login", handlers.LoginSubmit) app.Post("/login", requestMaker(handlers.LoginSubmit))
app.Get("/logout", handlers.Logout) app.Get("/logout", requestMaker(handlers.Logout))
app.Get("/protected-page", handlers.ProtectedPage) app.Get("/protected-page", requestMaker(handlers.ProtectedPage))
app.Static("/static", STATIC_PATH) app.Static("/static", STATIC_PATH)
} }