From a30b4097249e68cd6002a0d975b9d4ade83a5d5d Mon Sep 17 00:00:00 2001 From: Shalabh Agarwal Date: Tue, 21 Oct 2025 23:35:36 +0530 Subject: [PATCH] appview: add user in 404 error pages Change-Id: qvqrnmmlvsuwmzmvxqurvyoynqppxnml Signed-off-by: Shalabh Agarwal --- appview/issues/issues.go | 40 ++++++++++++++++++++++++-------- appview/middleware/middleware.go | 2 +- appview/pages/pages.go | 4 ++-- appview/repo/repo.go | 10 +++++--- appview/state/profile.go | 7 ++++-- appview/state/router.go | 5 ++-- appview/strings/strings.go | 5 +++- 7 files changed, 52 insertions(+), 21 deletions(-) diff --git a/appview/issues/issues.go b/appview/issues/issues.go index fb1acc0a..a8f94d4d 100644 --- a/appview/issues/issues.go +++ b/appview/issues/issues.go @@ -78,7 +78,9 @@ func (rp *Issues) RepoSingleIssue(w http.ResponseWriter, r *http.Request) { issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { l.Error("failed to get issue") - rp.pages.Error404(w) + rp.pages.Error404(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } @@ -132,7 +134,9 @@ func (rp *Issues) EditIssue(w http.ResponseWriter, r *http.Request) { issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { l.Error("failed to get issue") - rp.pages.Error404(w) + rp.pages.Error404(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } @@ -275,7 +279,9 @@ func (rp *Issues) CloseIssue(w http.ResponseWriter, r *http.Request) { issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { l.Error("failed to get issue") - rp.pages.Error404(w) + rp.pages.Error404(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } @@ -324,7 +330,9 @@ func (rp *Issues) ReopenIssue(w http.ResponseWriter, r *http.Request) { issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { l.Error("failed to get issue") - rp.pages.Error404(w) + rp.pages.Error404(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } @@ -368,7 +376,9 @@ func (rp *Issues) NewIssueComment(w http.ResponseWriter, r *http.Request) { issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { l.Error("failed to get issue") - rp.pages.Error404(w) + rp.pages.Error404(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } @@ -456,7 +466,9 @@ func (rp *Issues) IssueComment(w http.ResponseWriter, r *http.Request) { issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { l.Error("failed to get issue") - rp.pages.Error404(w) + rp.pages.Error404(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } @@ -497,7 +509,9 @@ func (rp *Issues) EditIssueComment(w http.ResponseWriter, r *http.Request) { issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { l.Error("failed to get issue") - rp.pages.Error404(w) + rp.pages.Error404(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } @@ -601,7 +615,9 @@ func (rp *Issues) ReplyIssueCommentPlaceholder(w http.ResponseWriter, r *http.Re issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { l.Error("failed to get issue") - rp.pages.Error404(w) + rp.pages.Error404(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } @@ -642,7 +658,9 @@ func (rp *Issues) ReplyIssueComment(w http.ResponseWriter, r *http.Request) { issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { l.Error("failed to get issue") - rp.pages.Error404(w) + rp.pages.Error404(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } @@ -683,7 +701,9 @@ func (rp *Issues) DeleteIssueComment(w http.ResponseWriter, r *http.Request) { issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { l.Error("failed to get issue") - rp.pages.Error404(w) + rp.pages.Error404(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } diff --git a/appview/middleware/middleware.go b/appview/middleware/middleware.go index 2d7366ab..73f11611 100644 --- a/appview/middleware/middleware.go +++ b/appview/middleware/middleware.go @@ -191,7 +191,7 @@ func (mw Middleware) ResolveIdent() middlewareFunc { if err != nil { // invalid did or handle log.Printf("failed to resolve did/handle '%s': %s\n", didOrHandle, err) - mw.pages.Error404(w) + mw.pages.Error404(w, pages.ErrorPageParams{}) return } diff --git a/appview/pages/pages.go b/appview/pages/pages.go index 8706e9d4..a700fc3d 100644 --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -1526,8 +1526,8 @@ func (p *Pages) Error500(w io.Writer, params ErrorPageParams) error { return p.execute("errors/500", w, params) } -func (p *Pages) Error404(w io.Writer) error { - return p.execute("errors/404", w, nil) +func (p *Pages) Error404(w io.Writer, params ErrorPageParams) error { + return p.execute("errors/404", w, params) } func (p *Pages) ErrorKnot404(w io.Writer) error { diff --git a/appview/repo/repo.go b/appview/repo/repo.go index 14b38700..6bdd650f 100644 --- a/appview/repo/repo.go +++ b/appview/repo/repo.go @@ -353,6 +353,7 @@ func (rp *Repo) RepoDescription(w http.ResponseWriter, r *http.Request) { func (rp *Repo) RepoCommit(w http.ResponseWriter, r *http.Request) { l := rp.logger.With("handler", "RepoCommit") + user := rp.oauth.GetUser(r) f, err := rp.repoResolver.Resolve(r) if err != nil { @@ -368,7 +369,9 @@ func (rp *Repo) RepoCommit(w http.ResponseWriter, r *http.Request) { } if !plumbing.IsHash(ref) { - rp.pages.Error404(w) + rp.pages.Error404(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } @@ -406,7 +409,6 @@ func (rp *Repo) RepoCommit(w http.ResponseWriter, r *http.Request) { l.Error("failed to GetVerifiedCommits", "err", err) } - user := rp.oauth.GetUser(r) repoInfo := f.RepoInfo(user) pipelines, err := getPipelineStatuses(rp.db, repoInfo, []string{result.Diff.Commit.This}) if err != nil { @@ -2512,7 +2514,9 @@ func (rp *Repo) RepoCompare(w http.ResponseWriter, r *http.Request) { if base == "" || head == "" { l.Error("invalid comparison") - rp.pages.Error404(w) + rp.pages.Error404(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } diff --git a/appview/state/profile.go b/appview/state/profile.go index c5a0b88e..c0344c5c 100644 --- a/appview/state/profile.go +++ b/appview/state/profile.go @@ -398,11 +398,14 @@ func (s *State) followingPage(w http.ResponseWriter, r *http.Request) { func (s *State) AtomFeedPage(w http.ResponseWriter, r *http.Request) { ident, ok := r.Context().Value("resolvedId").(identity.Identity) + user := s.oauth.GetUser(r) + if !ok { - s.pages.Error404(w) + s.pages.Error404(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } - user := s.oauth.GetUser(r) feed, err := s.getProfileFeed(r.Context(), &ident) if err != nil { diff --git a/appview/state/router.go b/appview/state/router.go index c430b962..cb4c7996 100644 --- a/appview/state/router.go +++ b/appview/state/router.go @@ -10,6 +10,7 @@ import ( "tangled.org/core/appview/labels" "tangled.org/core/appview/middleware" "tangled.org/core/appview/notifications" + "tangled.org/core/appview/pages" "tangled.org/core/appview/pipelines" "tangled.org/core/appview/pulls" "tangled.org/core/appview/repo" @@ -103,7 +104,7 @@ func (s *State) UserRouter(mw *middleware.Middleware) http.Handler { }) r.NotFound(func(w http.ResponseWriter, r *http.Request) { - s.pages.Error404(w) + s.pages.Error404(w, pages.ErrorPageParams{}) }) return r @@ -174,7 +175,7 @@ func (s *State) StandardRouter(mw *middleware.Middleware) http.Handler { r.Get("/brand", s.Brand) r.NotFound(func(w http.ResponseWriter, r *http.Request) { - s.pages.Error404(w) + s.pages.Error404(w, pages.ErrorPageParams{}) }) return r } diff --git a/appview/strings/strings.go b/appview/strings/strings.go index 8a291924..a8af2bfc 100644 --- a/appview/strings/strings.go +++ b/appview/strings/strings.go @@ -88,6 +88,7 @@ func (s *Strings) timeline(w http.ResponseWriter, r *http.Request) { func (s *Strings) contents(w http.ResponseWriter, r *http.Request) { l := s.Logger.With("handler", "contents") + user := s.OAuth.GetUser(r) id, ok := r.Context().Value("resolvedId").(identity.Identity) if !ok { @@ -118,7 +119,9 @@ func (s *Strings) contents(w http.ResponseWriter, r *http.Request) { } if len(strings) < 1 { l.Error("string not found") - s.Pages.Error404(w) + s.Pages.Error404(w, pages.ErrorPageParams{ + LoggedInUser: user, + }) return } if len(strings) != 1 { -- 2.43.0