From a90b57f722838e462c7721460a82555ab9ce3d5d Mon Sep 17 00:00:00 2001 From: Luka Date: Mon, 30 Oct 2023 18:20:25 +0100 Subject: [PATCH 1/4] Update: mounted user button if user logged in, show signin on inex --- Makefile | 2 +- templates/index.html | 73 +++++++++++++++++++++++++++------------- templates/templates.html | 4 +-- 3 files changed, 53 insertions(+), 26 deletions(-) diff --git a/Makefile b/Makefile index b927f1a..96e4a31 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ start: .PHONY: local air: - air -c .air.toml + /home/luka/go/bin/air -c .air.toml .PHONY: air tailwind-build: diff --git a/templates/index.html b/templates/index.html index 0443e15..44743ca 100644 --- a/templates/index.html +++ b/templates/index.html @@ -10,32 +10,59 @@

{{ .Title }}

{{ template "head" . }} - {{ template "nav" . }} -
+ +
{{ template "index" . }}
- + diff --git a/templates/templates.html b/templates/templates.html index 5ecf768..fe3bbad 100644 --- a/templates/templates.html +++ b/templates/templates.html @@ -11,7 +11,7 @@ {{ end }} -{{ define "nav" }} + {{ define "contact-dashboard" }}
Date: Tue, 31 Oct 2023 17:23:10 +0100 Subject: [PATCH 2/4] Update: moved stript tag to template and added it to all tabs --- templates/about.html | 9 ++++++-- templates/chart.html | 9 ++++++-- templates/contact.html | 9 ++++++-- templates/dashboard.html | 9 ++++++-- templates/fetch.html | 9 ++++++-- templates/index.html | 48 ++-------------------------------------- templates/settings.html | 9 ++++++-- templates/templates.html | 45 ++++++++++++++++++++++++++++++++++--- 8 files changed, 86 insertions(+), 61 deletions(-) diff --git a/templates/about.html b/templates/about.html index f584288..8dcc024 100644 --- a/templates/about.html +++ b/templates/about.html @@ -10,9 +10,14 @@

{{ .Title }}

{{ template "head" . }} - {{ template "nav" . }} -
+ +
{{ template "about" . }}
+ {{ template "script" .}} diff --git a/templates/chart.html b/templates/chart.html index 9dfd8b8..47b520d 100644 --- a/templates/chart.html +++ b/templates/chart.html @@ -11,9 +11,14 @@ {{ template "head" . }} - {{ template "nav" . }} -
+ +
{{ template "chart" . }}
+ {{ template "script" .}} diff --git a/templates/contact.html b/templates/contact.html index 779acea..30e9f58 100644 --- a/templates/contact.html +++ b/templates/contact.html @@ -12,9 +12,14 @@ {{ template "head" . }} - {{ template "nav" . }} -
+ +
{{ template "contact" . }}
+ {{ template "script" .}} diff --git a/templates/dashboard.html b/templates/dashboard.html index ed1824e..4c1e61d 100644 --- a/templates/dashboard.html +++ b/templates/dashboard.html @@ -41,9 +41,14 @@ {{ template "head" . }} - {{ template "nav" . }} -
+ +
{{ template "dashboard" . }}
+ {{ template "script" .}} diff --git a/templates/fetch.html b/templates/fetch.html index 99c96ab..8a695c9 100644 --- a/templates/fetch.html +++ b/templates/fetch.html @@ -13,9 +13,14 @@ {{ template "head" . }} - {{ template "nav" . }} -
+ +
{{ template "fetch" . }}
+ {{ template "script" .}} diff --git a/templates/index.html b/templates/index.html index 44743ca..fe06767 100644 --- a/templates/index.html +++ b/templates/index.html @@ -11,15 +11,7 @@

{{ .Title }}

{{ template "head" . }} @@ -27,42 +19,6 @@

{{ .Title }}

{{ template "index" . }}
- + {{ template "script" .}} diff --git a/templates/settings.html b/templates/settings.html index f968b46..5363fa1 100644 --- a/templates/settings.html +++ b/templates/settings.html @@ -85,9 +85,14 @@ {{ template "head" . }} - {{ template "nav" . }} -
+ +
{{ template "settings" . }}
+ {{ template "script" .}} diff --git a/templates/templates.html b/templates/templates.html index fe3bbad..3000589 100644 --- a/templates/templates.html +++ b/templates/templates.html @@ -11,7 +11,7 @@ {{ end }} - +{{ end }} {{ define "contact-dashboard" }} {{ end }} + +{{ define "script" }} + +{{ end }} From 4178859e3fcf93507e628dea9ec87242f96321bd Mon Sep 17 00:00:00 2001 From: Luka Date: Thu, 9 Nov 2023 16:59:32 +0100 Subject: [PATCH 3/4] Update: added middleware in golang to redirect to signin if user is not logged in --- go.mod | 3 ++ go.sum | 15 +++++++++ main.go | 55 +++++++++++++++++++++++++++------ templates/about.html | 4 +-- templates/chart.html | 4 +-- templates/contact.html | 4 +-- templates/dashboard.html | 4 +-- templates/fetch.html | 4 +-- templates/index.html | 4 +-- templates/settings.html | 4 +-- templates/signin.html | 45 +++++++++++++++++++++++++++ templates/templates.html | 67 ++++++++++++++++++++++++++-------------- 12 files changed, 167 insertions(+), 46 deletions(-) create mode 100644 templates/signin.html diff --git a/go.mod b/go.mod index 5deea6e..bc21330 100644 --- a/go.mod +++ b/go.mod @@ -12,12 +12,14 @@ require ( github.com/bep/godartsass v1.2.0 // indirect github.com/bep/godartsass/v2 v2.0.0 // indirect github.com/bep/golibsass v1.1.1 // indirect + github.com/clerkinc/clerk-sdk-go v1.48.4 // indirect github.com/cli/safeexec v1.0.1 // indirect github.com/cosmtrek/air v1.45.0 // indirect github.com/creack/pty v1.1.18 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/fatih/color v1.15.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/go-jose/go-jose/v3 v3.0.0 // indirect github.com/gohugoio/hugo v0.119.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect @@ -27,6 +29,7 @@ require ( ) require ( + github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/labstack/gommon v0.4.0 // indirect diff --git a/go.sum b/go.sum index 4d0c4da..8e01b63 100644 --- a/go.sum +++ b/go.sum @@ -46,10 +46,13 @@ github.com/bep/godartsass/v2 v2.0.0 h1:Ruht+BpBWkpmW+yAM2dkp7RSSeN0VLaTobyW0CiSP github.com/bep/godartsass/v2 v2.0.0/go.mod h1:AcP8QgC+OwOXEq6im0WgDRYK7scDsmZCEW62o1prQLo= github.com/bep/golibsass v1.1.1 h1:xkaet75ygImMYjM+FnHIT3xJn7H0xBA9UxSOJjk8Khw= github.com/bep/golibsass v1.1.1/go.mod h1:DL87K8Un/+pWUS75ggYv41bliGiolxzDKWJAq3eJ1MA= +github.com/brianvoe/gofakeit/v6 v6.19.0/go.mod h1:Ow6qC71xtwm79anlwKRlWZW6zVq9D2XHE4QSSMP/rU8= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/clerkinc/clerk-sdk-go v1.48.4 h1:Cq12M+Ep1ip06X7uNkk714dqJxzgJURLvEDuMUDprEw= +github.com/clerkinc/clerk-sdk-go v1.48.4/go.mod h1:pejhMTTDAuw5aBpiHBEOOOHMAsxNfPvKfM5qexFJYlc= github.com/cli/safeexec v1.0.0/go.mod h1:Z/D4tTN8Vs5gXYHDCbaM1S/anmEDnJb1iW0+EJ5zx3Q= github.com/cli/safeexec v1.0.1 h1:e/C79PbXF4yYTN/wauC4tviMxEV13BwljGj0N9j+N00= github.com/cli/safeexec v1.0.1/go.mod h1:Z/D4tTN8Vs5gXYHDCbaM1S/anmEDnJb1iW0+EJ5zx3Q= @@ -65,6 +68,8 @@ github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/donseba/go-htmx v1.0.1 h1:GtDMX1uEvIy53dSwkN63qKhq/RLVXV1RyFIbZfR7040= github.com/donseba/go-htmx v1.0.1/go.mod h1:SVMQJFOsH2GQyQqV/d0tdtgXVX6FMuVMQLlEqbPupnw= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= @@ -84,6 +89,8 @@ github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbS github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-jose/go-jose/v3 v3.0.0 h1:s6rrhirfEP/CGIoc6p+PZAeogN2SxKav6Wp7+dyMWVo= +github.com/go-jose/go-jose/v3 v3.0.0/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= github.com/gohugoio/hugo v0.119.0 h1:kQha6WHt5GcCbI2PELB5KjWMHFJ8LJLrh3lusxnmCng= github.com/gohugoio/hugo v0.119.0/go.mod h1:pXwmL2lFumAkr3qS2D262seu4SWDLphQLvYfhdGdLRU= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= @@ -128,6 +135,7 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -191,6 +199,7 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= @@ -223,11 +232,13 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= @@ -305,6 +316,7 @@ golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= @@ -373,6 +385,7 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= @@ -381,6 +394,7 @@ golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -390,6 +404,7 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= diff --git a/main.go b/main.go index 4ddc05f..fcb33c8 100644 --- a/main.go +++ b/main.go @@ -58,6 +58,8 @@ type ApiResponse struct { Completed bool `json:"completed"` } +var isAuthenticated bool = false + var settingsGlobal SettingsGlobal func (a *App) Index(c echo.Context) error { @@ -112,6 +114,19 @@ func (a *App) Settings(c echo.Context) error { return c.Render(http.StatusOK, "settings.html", &page) } +func (a *App) SignIn(c echo.Context) error { + r := c.Request() + h := r.Context().Value(htmx.ContextRequestHeader).(htmx.HxRequestHeader) + + page := Page{Title: "Sign In", Boosted: h.HxBoosted} + + if page.Boosted { + return c.Render(http.StatusOK, "SignIn", &page) + } + + return c.Render(http.StatusOK, "signin.html", &page) +} + func (a *App) Fetch(c echo.Context) error { r := c.Request() h := r.Context().Value(htmx.ContextRequestHeader).(htmx.HxRequestHeader) @@ -153,6 +168,17 @@ func (a *App) Test(c echo.Context) error { return c.Render(http.StatusOK, "test", Page{Title: "Test"}) } +func (a *App) CheckLogin(c echo.Context) (err error) { + var data struct { + IsLoggedIn bool `json:"isLoggedIn"` + } + if err := c.Bind(&data); err != nil { + return err + } + isAuthenticated = data.IsLoggedIn + return c.String(http.StatusOK, "User authenticated") +} + func (a *App) Submit(c echo.Context) (err error) { name := c.FormValue("name") email := c.FormValue("email") @@ -299,15 +325,17 @@ func main() { e.Renderer = app.appTemplates - e.GET("/", app.Index) - e.GET("/about", app.About) - e.GET("/contact", app.Contact) - e.GET("/settings", app.Settings) - e.GET("/test", app.Test) - e.GET("/chart", app.Chart) - e.GET("/fetch", app.Fetch) - e.GET("/dashboard", app.Dashboard) - + e.GET("/", AuthMiddleware(app.Index)) + e.GET("/about", AuthMiddleware(app.About)) + e.GET("/contact", AuthMiddleware(app.Contact)) + e.GET("/settings", AuthMiddleware(app.Settings)) + e.GET("/test", AuthMiddleware(app.Test)) + e.GET("/chart", AuthMiddleware(app.Chart)) + e.GET("/fetch", AuthMiddleware(app.Fetch)) + e.GET("/dashboard", AuthMiddleware(app.Dashboard)) + e.GET("/signin", app.SignIn) + + e.POST("/checkLogin", app.CheckLogin) e.POST("/submit", app.Submit) e.POST("/setSettings", app.setSettings) e.GET("/getData", app.getData) @@ -395,6 +423,15 @@ func getStudents(db *sql.DB) []Student { return students } +func AuthMiddleware(next echo.HandlerFunc) echo.HandlerFunc { + return func(c echo.Context) error { + if !isAuthenticated { + return c.Redirect(http.StatusFound, "/signin") + } + return next(c) + } +} + func HtmxMiddleware(next echo.HandlerFunc) echo.HandlerFunc { return func(c echo.Context) error { ctx := c.Request().Context() diff --git a/templates/about.html b/templates/about.html index 8dcc024..14f799f 100644 --- a/templates/about.html +++ b/templates/about.html @@ -10,12 +10,12 @@

{{ .Title }}

{{ template "head" . }} -