From 332460b90d6248718219b3bc27ae00c5d708c7fd Mon Sep 17 00:00:00 2001 From: riwiwa Date: Thu, 12 Feb 2026 23:43:47 -0800 Subject: [PATCH] redirect to profile on root, login if logged out, create account if no accounts. move pfp location --- db/db.go | 2 +- static/assets/{ => pfps}/default.png | Bin web/web.go | 28 +++++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) rename static/assets/{ => pfps}/default.png (100%) diff --git a/db/db.go b/db/db.go index 1787725..c0f596e 100644 --- a/db/db.go +++ b/db/db.go @@ -95,7 +95,7 @@ func CreateUsersTable() error { username TEXT NOT NULL UNIQUE, password TEXT NOT NULL, bio TEXT DEFAULT 'This profile has no bio.', - pfp TEXT DEFAULT '/files/assets/default.png', + pfp TEXT DEFAULT '/files/assets/pfps/default.png', allow_duplicate_edits BOOLEAN DEFAULT FALSE, pk SERIAL PRIMARY KEY );`) diff --git a/static/assets/default.png b/static/assets/pfps/default.png similarity index 100% rename from static/assets/default.png rename to static/assets/pfps/default.png diff --git a/web/web.go b/web/web.go index 4e4cbcb..e3faa41 100644 --- a/web/web.go +++ b/web/web.go @@ -681,11 +681,39 @@ func importSpotifyProgressHandler(w http.ResponseWriter, r *http.Request) { } } +func hasUsers(ctx context.Context) bool { + var count int + err := db.Pool.QueryRow(ctx, "SELECT COUNT(*) FROM users;").Scan(&count) + if err != nil { + fmt.Fprintf(os.Stderr, "Error checking for users: %v\n", err) + return false + } + return count > 0 +} + +func rootHandler() http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + if !hasUsers(r.Context()) { + http.Redirect(w, r, "/createaccount", http.StatusSeeOther) + return + } + + username := getLoggedInUsername(r) + if username == "" { + http.Redirect(w, r, "/login", http.StatusSeeOther) + return + } + + http.Redirect(w, r, "/profile/"+username, http.StatusSeeOther) + } +} + func Start() { addr := ":1234" r := chi.NewRouter() r.Use(middleware.Logger) r.Handle("/files/*", http.StripPrefix("/files", http.FileServer(http.Dir("./static")))) + r.Get("/", rootHandler()) r.Get("/login", loginPageHandler()) r.Get("/createaccount", createAccountPageHandler()) r.Get("/profile/{username}", profilePageHandler())