aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/ui.go19
-rw-r--r--src/user/routes.go14
2 files changed, 20 insertions, 13 deletions
diff --git a/src/server/ui.go b/src/server/ui.go
index 7d59168..baea769 100644
--- a/src/server/ui.go
+++ b/src/server/ui.go
@@ -8,6 +8,7 @@ import (
"strings"
"gitlab.com/alexkavon/newsstand/src/conf"
+ "gitlab.com/alexkavon/newsstand/src/sessions"
)
type Ui struct {
@@ -47,7 +48,7 @@ func (ui *Ui) CompilePages(uipath string) {
}
}
-func (ui *Ui) Render(w http.ResponseWriter, pageName string, data interface{}) {
+func (ui *Ui) Render(w http.ResponseWriter, r *http.Request, pageName string, data map[string]any) {
templateName := "base"
// if the pageName has more than 1 `/` then it specifies the name of a template to target
slashCount := strings.Count(pageName, "/")
@@ -55,14 +56,20 @@ func (ui *Ui) Render(w http.ResponseWriter, pageName string, data interface{}) {
splitName := strings.Split(pageName, "/")
templateName = splitName[0]
}
-
- ui.RenderTemplate(w, pageName, templateName, data)
+ ui.RenderTemplate(w, r, pageName, templateName, data)
}
-func (ui *Ui) RenderTemplate(w http.ResponseWriter, pageName, templateName string, data interface{}) {
+func (ui *Ui) RenderTemplate(w http.ResponseWriter, r *http.Request, pageName, templateName string, data map[string]any) {
+ d := map[string]any{}
+ for k, v := range data {
+ d[k] = v
+ }
+ if session := r.Context().Value(sessions.SessionCtxKey("session")); session != nil {
+ d["session"] = session.(*sessions.Session)
+ }
p := ui.pages[pageName]
- err := p.ExecuteTemplate(w, templateName, data)
+ err := p.ExecuteTemplate(w, templateName, d)
if err != nil {
- log.Fatal(err)
+ log.Println(err)
}
}
diff --git a/src/user/routes.go b/src/user/routes.go
index 3bcab06..d8c8d43 100644
--- a/src/user/routes.go
+++ b/src/user/routes.go
@@ -56,7 +56,7 @@ var Routes = server.Routes{
func Create(s *server.Server) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
- s.Ui.Render(w, "user/create", nil)
+ s.Ui.Render(w, r, "user/create", nil)
}
}
@@ -98,7 +98,7 @@ func Store(s *server.Server) http.HandlerFunc {
func LoginForm(s *server.Server) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
- s.Ui.Render(w, "user/login", nil)
+ s.Ui.Render(w, r, "user/login", nil)
}
}
@@ -113,16 +113,16 @@ func Login(s *server.Server) http.HandlerFunc {
func Logout(s *server.Server) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
- session := r.Context().Value("session").(*sessions.Session)
- session.Destroy(w)
+ if session := r.Context().Value(sessions.SessionCtxKey("session")); session != nil {
+ session.(*sessions.Session).Destroy(w)
+ }
http.Redirect(w, r, "/u/auth", http.StatusSeeOther)
}
}
func Show(s *server.Server) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
- session := r.Context().Value(sessions.SessionCtxKey("session")).(*sessions.Session)
- username := session.Get("username").(string)
- s.Ui.Render(w, "user/me", &struct{ Message, Username string }{"Congrats on getting this far!", username})
+ pageData := map[string]any{"message": "Congrats on getting this far!"}
+ s.Ui.Render(w, r, "user/me", pageData)
}
}