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
+
+
+ Protected page
+
+
if request.UserAuthenticated() {
diff --git a/app/templates/layout_templ.go b/app/templates/layout_templ.go
index b698ec1..41d5ae9 100644
--- a/app/templates/layout_templ.go
+++ b/app/templates/layout_templ.go
@@ -84,6 +84,32 @@ 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("")
+ 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
+ })
+}