From 8bafff716c9b26e3e13cb9f2f604b9c0625e01ca Mon Sep 17 00:00:00 2001 From: Eden Kirin Date: Tue, 6 Feb 2024 19:01:49 +0100 Subject: [PATCH] Test protected page --- app/handlers/protected_page.go | 20 +++++++ app/router/router.go | 1 + app/templates/layout.templ | 5 ++ app/templates/layout_templ.go | 52 +++++++++++++----- app/templates/protected_page.templ | 19 +++++++ app/templates/protected_page_templ.go | 79 +++++++++++++++++++++++++++ 6 files changed, 163 insertions(+), 13 deletions(-) create mode 100644 app/handlers/protected_page.go create mode 100644 app/templates/protected_page.templ create mode 100644 app/templates/protected_page_templ.go diff --git a/app/handlers/protected_page.go b/app/handlers/protected_page.go new file mode 100644 index 0000000..a01276f --- /dev/null +++ b/app/handlers/protected_page.go @@ -0,0 +1,20 @@ +package handlers + +import ( + "fiber-sessions/app/data" + "fiber-sessions/app/router/requests" + "fiber-sessions/app/templates" + + "github.com/gofiber/fiber/v2" +) + +func ProtectedPage(ctx *fiber.Ctx) error { + request := requests.NewRequest(ctx, data.UsersStorage) + + pc := templates.PageContext{ + Title: "Protected page", + ActivePage: "protected-page", + } + Render(ctx, templates.ProtectedPage(request, pc)) + return nil +} diff --git a/app/router/router.go b/app/router/router.go index c980e0a..92d5f65 100644 --- a/app/router/router.go +++ b/app/router/router.go @@ -57,6 +57,7 @@ func initRouter(app *fiber.App) { app.Get("/login", handlers.Login) app.Post("/login", handlers.LoginSubmit) app.Get("/logout", handlers.Logout) + app.Get("/protected-page", handlers.ProtectedPage) app.Static("/static", STATIC_PATH) } diff --git a/app/templates/layout.templ b/app/templates/layout.templ index 495735d..1a1566d 100644 --- a/app/templates/layout.templ +++ b/app/templates/layout.templ @@ -26,6 +26,11 @@ templ baseLayout(request *requests.Request, pc PageContext) { Home + if request.UserAuthenticated() {
  • ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var7 = []any{"nav-link", templ.KV("active", pc.ActivePage == "protected-page")} + templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var7...) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Var8 := `Protected page` + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var8) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
  • ") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err @@ -93,8 +119,8 @@ func baseLayout(request *requests.Request, pc PageContext) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var7 := `Logout` - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var7) + templ_7745c5c3_Var9 := `Logout` + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var9) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -107,8 +133,8 @@ func baseLayout(request *requests.Request, pc PageContext) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var8 = []any{"nav-link", templ.KV("active", pc.ActivePage == "login")} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var8...) + var templ_7745c5c3_Var10 = []any{"nav-link", templ.KV("active", pc.ActivePage == "login")} + templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var10...) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -116,7 +142,7 @@ func baseLayout(request *requests.Request, pc PageContext) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ.CSSClasses(templ_7745c5c3_Var8).String())) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ.CSSClasses(templ_7745c5c3_Var10).String())) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -124,8 +150,8 @@ func baseLayout(request *requests.Request, pc PageContext) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var9 := `Login` - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var9) + templ_7745c5c3_Var11 := `Login` + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var11) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -143,17 +169,17 @@ func baseLayout(request *requests.Request, pc PageContext) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var10 := `Hello, ` - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var10) + templ_7745c5c3_Var12 := `Hello, ` + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var12) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var11 string - templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(request.User.FirstName) + var templ_7745c5c3_Var13 string + templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(request.User.FirstName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templates/layout.templ`, Line: 44, Col: 37} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templates/layout.templ`, Line: 49, Col: 37} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/app/templates/protected_page.templ b/app/templates/protected_page.templ new file mode 100644 index 0000000..f0bb74c --- /dev/null +++ b/app/templates/protected_page.templ @@ -0,0 +1,19 @@ +package templates + +import ( + "fiber-sessions/app/router/requests" +) + +templ ProtectedPage(request *requests.Request, pc PageContext) { + @baseLayout(request, pc) { + if request.UserAuthenticated() { +
    + Some protected content. +
    + } else { +
    + Can't access to this protected content! +
    + } + } +} diff --git a/app/templates/protected_page_templ.go b/app/templates/protected_page_templ.go new file mode 100644 index 0000000..ed97a5b --- /dev/null +++ b/app/templates/protected_page_templ.go @@ -0,0 +1,79 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.513 +package templates + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import "context" +import "io" +import "bytes" + +import ( + "fiber-sessions/app/router/requests" +) + +func ProtectedPage(request *requests.Request, pc PageContext) templ.Component { + return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) + if !templ_7745c5c3_IsBuffer { + templ_7745c5c3_Buffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Var2 := templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) + if !templ_7745c5c3_IsBuffer { + templ_7745c5c3_Buffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) + } + if request.UserAuthenticated() { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
    ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Var3 := `Some protected content.` + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var3) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
    ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
    ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Var4 := `Can't access to this protected content!` + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var4) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
    ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = io.Copy(templ_7745c5c3_W, templ_7745c5c3_Buffer) + } + return templ_7745c5c3_Err + }) + templ_7745c5c3_Err = baseLayout(request, pc).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +}