package handlers import ( "log" "net/http" "threadr/models" "github.com/gorilla/sessions" ) func UserHomeHandler(app *App) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { session := r.Context().Value("session").(*sessions.Session) userID, ok := session.Values["user_id"].(int) if !ok { http.Redirect(w, r, app.Config.ThreadrDir+"/login/", http.StatusFound) return } user, err := models.GetUserByID(app.DB, userID) if err != nil { log.Printf("Error fetching user in UserHomeHandler: %v", err) http.Error(w, "Internal Server Error", http.StatusInternalServerError) return } if user == nil { http.Error(w, "User not found", http.StatusNotFound) return } data := struct { PageData Username string }{ PageData: PageData{ Title: "ThreadR - User Home", Navbar: "userhome", LoggedIn: true, ShowCookieBanner: false, BasePath: app.Config.ThreadrDir, StaticPath: app.Config.ThreadrDir + "/static", CurrentURL: r.URL.Path, }, Username: user.Username, } if err := app.Tmpl.ExecuteTemplate(w, "userhome", data); err != nil { log.Printf("Error executing template in UserHomeHandler: %v", err) http.Error(w, "Internal Server Error", http.StatusInternalServerError) return } } }