Monorepo for Tangled tangled.org

appview: add logged in user in 503 error pages #692

closed opened by serendipty01.dev targeting master from serendipty01.dev/tangled-core: push-prquzlvztlul
Labels

None yet.

assignee

None yet.

Participants 2
AT URI
at://did:plc:pzcr34e3e2emtcnyzrpmilht/sh.tangled.repo.pull/3m3q2pdqn2p22
+123 -48
Diff #0
+6 -2
appview/issues/issues.go
··· 101 101 ) 102 102 if err != nil { 103 103 l.Error("failed to fetch labels", "err", err) 104 - rp.pages.Error503(w) 104 + rp.pages.Error503(w, pages.ErrorPageParams{ 105 + LoggedInUser: user, 106 + }) 105 107 return 106 108 } 107 109 ··· 826 828 ) 827 829 if err != nil { 828 830 l.Error("failed to fetch labels", "err", err) 829 - rp.pages.Error503(w) 831 + rp.pages.Error503(w, pages.ErrorPageParams{ 832 + LoggedInUser: user, 833 + }) 830 834 return 831 835 } 832 836
+2 -2
appview/pages/pages.go
··· 1534 1534 return p.execute("errors/knot404", w, params) 1535 1535 } 1536 1536 1537 - func (p *Pages) Error503(w io.Writer) error { 1538 - return p.execute("errors/503", w, nil) 1537 + func (p *Pages) Error503(w io.Writer, params ErrorPageParams) error { 1538 + return p.execute("errors/503", w, params) 1539 1539 }
+30 -10
appview/pulls/pulls.go
··· 205 205 ) 206 206 if err != nil { 207 207 log.Println("failed to fetch labels", err) 208 - s.pages.Error503(w) 208 + s.pages.Error503(w, pages.ErrorPageParams{ 209 + LoggedInUser: user, 210 + }) 209 211 return 210 212 } 211 213 ··· 636 638 ) 637 639 if err != nil { 638 640 log.Println("failed to fetch labels", err) 639 - s.pages.Error503(w) 641 + s.pages.Error503(w, pages.ErrorPageParams{ 642 + LoggedInUser: user, 643 + }) 640 644 return 641 645 } 642 646 ··· 785 789 if err != nil { 786 790 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 787 791 log.Println("failed to call XRPC repo.branches", xrpcerr) 788 - s.pages.Error503(w) 792 + s.pages.Error503(w, pages.ErrorPageParams{ 793 + LoggedInUser: user, 794 + }) 789 795 return 790 796 } 791 797 log.Println("failed to fetch branches", err) ··· 795 801 var result types.RepoBranchesResponse 796 802 if err := json.Unmarshal(xrpcBytes, &result); err != nil { 797 803 log.Println("failed to decode XRPC response", err) 798 - s.pages.Error503(w) 804 + s.pages.Error503(w, pages.ErrorPageParams{ 805 + LoggedInUser: user, 806 + }) 799 807 return 800 808 } 801 809 ··· 1392 1400 if err != nil { 1393 1401 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 1394 1402 log.Println("failed to call XRPC repo.branches", xrpcerr) 1395 - s.pages.Error503(w) 1403 + s.pages.Error503(w, pages.ErrorPageParams{ 1404 + LoggedInUser: user, 1405 + }) 1396 1406 return 1397 1407 } 1398 1408 log.Println("failed to fetch branches", err) ··· 1402 1412 var result types.RepoBranchesResponse 1403 1413 if err := json.Unmarshal(xrpcBytes, &result); err != nil { 1404 1414 log.Println("failed to decode XRPC response", err) 1405 - s.pages.Error503(w) 1415 + s.pages.Error503(w, pages.ErrorPageParams{ 1416 + LoggedInUser: user, 1417 + }) 1406 1418 return 1407 1419 } 1408 1420 ··· 1484 1496 if err != nil { 1485 1497 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 1486 1498 log.Println("failed to call XRPC repo.branches for source", xrpcerr) 1487 - s.pages.Error503(w) 1499 + s.pages.Error503(w, pages.ErrorPageParams{ 1500 + LoggedInUser: user, 1501 + }) 1488 1502 return 1489 1503 } 1490 1504 log.Println("failed to fetch source branches", err) ··· 1495 1509 var sourceBranches types.RepoBranchesResponse 1496 1510 if err := json.Unmarshal(sourceXrpcBytes, &sourceBranches); err != nil { 1497 1511 log.Println("failed to decode source branches XRPC response", err) 1498 - s.pages.Error503(w) 1512 + s.pages.Error503(w, pages.ErrorPageParams{ 1513 + LoggedInUser: user, 1514 + }) 1499 1515 return 1500 1516 } 1501 1517 ··· 1513 1529 if err != nil { 1514 1530 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 1515 1531 log.Println("failed to call XRPC repo.branches for target", xrpcerr) 1516 - s.pages.Error503(w) 1532 + s.pages.Error503(w, pages.ErrorPageParams{ 1533 + LoggedInUser: user, 1534 + }) 1517 1535 return 1518 1536 } 1519 1537 log.Println("failed to fetch target branches", err) ··· 1524 1542 var targetBranches types.RepoBranchesResponse 1525 1543 if err := json.Unmarshal(targetXrpcBytes, &targetBranches); err != nil { 1526 1544 log.Println("failed to decode target branches XRPC response", err) 1527 - s.pages.Error503(w) 1545 + s.pages.Error503(w, pages.ErrorPageParams{ 1546 + LoggedInUser: user, 1547 + }) 1528 1548 return 1529 1549 } 1530 1550
+3 -1
appview/repo/index.go
··· 67 67 return 68 68 } 69 69 70 - rp.pages.Error503(w) 70 + rp.pages.Error503(w, pages.ErrorPageParams{ 71 + LoggedInUser: user, 72 + }) 71 73 l.Error("failed to build index response", "err", err) 72 74 return 73 75 }
+76 -31
appview/repo/repo.go
··· 90 90 91 91 func (rp *Repo) DownloadArchive(w http.ResponseWriter, r *http.Request) { 92 92 l := rp.logger.With("handler", "DownloadArchive") 93 + user := rp.oauth.GetUser(r) 93 94 94 95 ref := chi.URLParam(r, "ref") 95 96 ref, _ = url.PathUnescape(ref) ··· 113 114 archiveBytes, err := tangled.RepoArchive(r.Context(), xrpcc, "tar.gz", "", ref, repo) 114 115 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 115 116 l.Error("failed to call XRPC repo.archive", "err", xrpcerr) 116 - rp.pages.Error503(w) 117 + rp.pages.Error503(w, pages.ErrorPageParams{ 118 + LoggedInUser: user, 119 + }) 117 120 return 118 121 } 119 122 ··· 130 133 131 134 func (rp *Repo) RepoLog(w http.ResponseWriter, r *http.Request) { 132 135 l := rp.logger.With("handler", "RepoLog") 136 + user := rp.oauth.GetUser(r) 133 137 134 138 f, err := rp.repoResolver.Resolve(r) 135 139 if err != nil { ··· 169 173 xrpcBytes, err := tangled.RepoLog(r.Context(), xrpcc, cursor, limit, "", ref, repo) 170 174 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 171 175 l.Error("failed to call XRPC repo.log", "err", xrpcerr) 172 - rp.pages.Error503(w) 176 + rp.pages.Error503(w, pages.ErrorPageParams{ 177 + LoggedInUser: user, 178 + }) 173 179 return 174 180 } 175 181 176 182 var xrpcResp types.RepoLogResponse 177 183 if err := json.Unmarshal(xrpcBytes, &xrpcResp); err != nil { 178 184 l.Error("failed to decode XRPC response", "err", err) 179 - rp.pages.Error503(w) 185 + rp.pages.Error503(w, pages.ErrorPageParams{ 186 + LoggedInUser: user, 187 + }) 180 188 return 181 189 } 182 190 183 191 tagBytes, err := tangled.RepoTags(r.Context(), xrpcc, "", 0, repo) 184 192 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 185 193 l.Error("failed to call XRPC repo.tags", "err", xrpcerr) 186 - rp.pages.Error503(w) 194 + rp.pages.Error503(w, pages.ErrorPageParams{ 195 + LoggedInUser: user, 196 + }) 187 197 return 188 198 } 189 199 ··· 204 214 branchBytes, err := tangled.RepoBranches(r.Context(), xrpcc, "", 0, repo) 205 215 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 206 216 l.Error("failed to call XRPC repo.branches", "err", xrpcerr) 207 - rp.pages.Error503(w) 217 + rp.pages.Error503(w, pages.ErrorPageParams{ 218 + LoggedInUser: user, 219 + }) 208 220 return 209 221 } 210 222 ··· 217 229 } 218 230 } 219 231 220 - user := rp.oauth.GetUser(r) 221 - 222 232 emailToDidMap, err := db.GetEmailToDid(rp.db, uniqueEmails(xrpcResp.Commits), true) 223 233 if err != nil { 224 234 l.Error("failed to fetch email to did mapping", "err", err) ··· 388 398 xrpcBytes, err := tangled.RepoDiff(r.Context(), xrpcc, ref, repo) 389 399 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 390 400 l.Error("failed to call XRPC repo.diff", "err", xrpcerr) 391 - rp.pages.Error503(w) 401 + rp.pages.Error503(w, pages.ErrorPageParams{ 402 + LoggedInUser: user, 403 + }) 392 404 return 393 405 } 394 406 395 407 var result types.RepoCommitResponse 396 408 if err := json.Unmarshal(xrpcBytes, &result); err != nil { 397 409 l.Error("failed to decode XRPC response", "err", err) 398 - rp.pages.Error503(w) 410 + rp.pages.Error503(w, pages.ErrorPageParams{ 411 + LoggedInUser: user, 412 + }) 399 413 return 400 414 } 401 415 ··· 433 447 434 448 func (rp *Repo) RepoTree(w http.ResponseWriter, r *http.Request) { 435 449 l := rp.logger.With("handler", "RepoTree") 450 + user := rp.oauth.GetUser(r) 436 451 437 452 f, err := rp.repoResolver.Resolve(r) 438 453 if err != nil { ··· 462 477 xrpcResp, err := tangled.RepoTree(r.Context(), xrpcc, treePath, ref, repo) 463 478 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 464 479 l.Error("failed to call XRPC repo.tree", "err", xrpcerr) 465 - rp.pages.Error503(w) 480 + rp.pages.Error503(w, pages.ErrorPageParams{ 481 + LoggedInUser: user, 482 + }) 466 483 return 467 484 } 468 485 ··· 514 531 return 515 532 } 516 533 517 - user := rp.oauth.GetUser(r) 518 - 519 534 var breadcrumbs [][]string 520 535 breadcrumbs = append(breadcrumbs, []string{f.Name, fmt.Sprintf("/%s/tree/%s", f.OwnerSlashRepo(), url.PathEscape(ref))}) 521 536 if treePath != "" { ··· 537 552 538 553 func (rp *Repo) RepoTags(w http.ResponseWriter, r *http.Request) { 539 554 l := rp.logger.With("handler", "RepoTags") 555 + user := rp.oauth.GetUser(r) 540 556 541 557 f, err := rp.repoResolver.Resolve(r) 542 558 if err != nil { ··· 557 573 xrpcBytes, err := tangled.RepoTags(r.Context(), xrpcc, "", 0, repo) 558 574 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 559 575 l.Error("failed to call XRPC repo.tags", "err", xrpcerr) 560 - rp.pages.Error503(w) 576 + rp.pages.Error503(w, pages.ErrorPageParams{ 577 + LoggedInUser: user, 578 + }) 561 579 return 562 580 } 563 581 564 582 var result types.RepoTagsResponse 565 583 if err := json.Unmarshal(xrpcBytes, &result); err != nil { 566 584 l.Error("failed to decode XRPC response", "err", err) 567 - rp.pages.Error503(w) 585 + rp.pages.Error503(w, pages.ErrorPageParams{ 586 + LoggedInUser: user, 587 + }) 568 588 return 569 589 } 570 590 ··· 596 616 } 597 617 } 598 618 599 - user := rp.oauth.GetUser(r) 600 619 rp.pages.RepoTags(w, pages.RepoTagsParams{ 601 620 LoggedInUser: user, 602 621 RepoInfo: f.RepoInfo(user), ··· 608 627 609 628 func (rp *Repo) RepoBranches(w http.ResponseWriter, r *http.Request) { 610 629 l := rp.logger.With("handler", "RepoBranches") 630 + user := rp.oauth.GetUser(r) 611 631 612 632 f, err := rp.repoResolver.Resolve(r) 613 633 if err != nil { ··· 628 648 xrpcBytes, err := tangled.RepoBranches(r.Context(), xrpcc, "", 0, repo) 629 649 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 630 650 l.Error("failed to call XRPC repo.branches", "err", xrpcerr) 631 - rp.pages.Error503(w) 651 + rp.pages.Error503(w, pages.ErrorPageParams{ 652 + LoggedInUser: user, 653 + }) 632 654 return 633 655 } 634 656 635 657 var result types.RepoBranchesResponse 636 658 if err := json.Unmarshal(xrpcBytes, &result); err != nil { 637 659 l.Error("failed to decode XRPC response", "err", err) 638 - rp.pages.Error503(w) 660 + rp.pages.Error503(w, pages.ErrorPageParams{ 661 + LoggedInUser: user, 662 + }) 639 663 return 640 664 } 641 665 642 666 sortBranches(result.Branches) 643 667 644 - user := rp.oauth.GetUser(r) 645 668 rp.pages.RepoBranches(w, pages.RepoBranchesParams{ 646 669 LoggedInUser: user, 647 670 RepoInfo: f.RepoInfo(user), ··· 700 723 701 724 func (rp *Repo) RepoBlob(w http.ResponseWriter, r *http.Request) { 702 725 l := rp.logger.With("handler", "RepoBlob") 726 + user := rp.oauth.GetUser(r) 703 727 704 728 f, err := rp.repoResolver.Resolve(r) 705 729 if err != nil { ··· 726 750 resp, err := tangled.RepoBlob(r.Context(), xrpcc, filePath, false, ref, repo) 727 751 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 728 752 l.Error("failed to call XRPC repo.blob", "err", xrpcerr) 729 - rp.pages.Error503(w) 753 + rp.pages.Error503(w, pages.ErrorPageParams{ 754 + LoggedInUser: user, 755 + }) 730 756 return 731 757 } 732 758 ··· 798 824 sizeHint = uint64(len(resp.Content)) 799 825 } 800 826 801 - user := rp.oauth.GetUser(r) 802 - 803 827 // Determine if content is binary (dereference pointer) 804 828 isBinary := false 805 829 if resp.IsBinary != nil { ··· 826 850 827 851 func (rp *Repo) RepoBlobRaw(w http.ResponseWriter, r *http.Request) { 828 852 l := rp.logger.With("handler", "RepoBlobRaw") 853 + user := rp.oauth.GetUser(r) 829 854 830 855 f, err := rp.repoResolver.Resolve(r) 831 856 if err != nil { ··· 874 899 resp, err := client.Do(req) 875 900 if err != nil { 876 901 l.Error("failed to reach knotserver", "err", err) 877 - rp.pages.Error503(w) 902 + rp.pages.Error503(w, pages.ErrorPageParams{ 903 + LoggedInUser: user, 904 + }) 878 905 return 879 906 } 880 907 defer resp.Body.Close() ··· 1965 1992 xrpcBytes, err := tangled.RepoBranches(r.Context(), xrpcc, "", 0, repo) 1966 1993 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 1967 1994 l.Error("failed to call XRPC repo.branches", "err", xrpcerr) 1968 - rp.pages.Error503(w) 1995 + rp.pages.Error503(w, pages.ErrorPageParams{ 1996 + LoggedInUser: user, 1997 + }) 1969 1998 return 1970 1999 } 1971 2000 1972 2001 var result types.RepoBranchesResponse 1973 2002 if err := json.Unmarshal(xrpcBytes, &result); err != nil { 1974 2003 l.Error("failed to decode XRPC response", "err", err) 1975 - rp.pages.Error503(w) 2004 + rp.pages.Error503(w, pages.ErrorPageParams{ 2005 + LoggedInUser: user, 2006 + }) 1976 2007 return 1977 2008 } 1978 2009 1979 2010 defaultLabels, err := db.GetLabelDefinitions(rp.db, db.FilterIn("at_uri", models.DefaultLabelDefs())) 1980 2011 if err != nil { 1981 2012 l.Error("failed to fetch labels", "err", err) 1982 - rp.pages.Error503(w) 2013 + rp.pages.Error503(w, pages.ErrorPageParams{ 2014 + LoggedInUser: user, 2015 + }) 1983 2016 return 1984 2017 } 1985 2018 1986 2019 labels, err := db.GetLabelDefinitions(rp.db, db.FilterIn("at_uri", f.Repo.Labels)) 1987 2020 if err != nil { 1988 2021 l.Error("failed to fetch labels", "err", err) 1989 - rp.pages.Error503(w) 2022 + rp.pages.Error503(w, pages.ErrorPageParams{ 2023 + LoggedInUser: user, 2024 + }) 1990 2025 return 1991 2026 } 1992 2027 // remove default labels from the labels list, if present ··· 2420 2455 branchBytes, err := tangled.RepoBranches(r.Context(), xrpcc, "", 0, repo) 2421 2456 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 2422 2457 l.Error("failed to call XRPC repo.branches", "err", xrpcerr) 2423 - rp.pages.Error503(w) 2458 + rp.pages.Error503(w, pages.ErrorPageParams{ 2459 + LoggedInUser: user, 2460 + }) 2424 2461 return 2425 2462 } 2426 2463 ··· 2457 2494 tagBytes, err := tangled.RepoTags(r.Context(), xrpcc, "", 0, repo) 2458 2495 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 2459 2496 l.Error("failed to call XRPC repo.tags", "err", xrpcerr) 2460 - rp.pages.Error503(w) 2497 + rp.pages.Error503(w, pages.ErrorPageParams{ 2498 + LoggedInUser: user, 2499 + }) 2461 2500 return 2462 2501 } 2463 2502 ··· 2534 2573 branchBytes, err := tangled.RepoBranches(r.Context(), xrpcc, "", 0, repo) 2535 2574 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 2536 2575 l.Error("failed to call XRPC repo.branches", "err", xrpcerr) 2537 - rp.pages.Error503(w) 2576 + rp.pages.Error503(w, pages.ErrorPageParams{ 2577 + LoggedInUser: user, 2578 + }) 2538 2579 return 2539 2580 } 2540 2581 ··· 2548 2589 tagBytes, err := tangled.RepoTags(r.Context(), xrpcc, "", 0, repo) 2549 2590 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 2550 2591 l.Error("failed to call XRPC repo.tags", "err", xrpcerr) 2551 - rp.pages.Error503(w) 2592 + rp.pages.Error503(w, pages.ErrorPageParams{ 2593 + LoggedInUser: user, 2594 + }) 2552 2595 return 2553 2596 } 2554 2597 ··· 2562 2605 compareBytes, err := tangled.RepoCompare(r.Context(), xrpcc, repo, base, head) 2563 2606 if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { 2564 2607 l.Error("failed to call XRPC repo.compare", "err", xrpcerr) 2565 - rp.pages.Error503(w) 2608 + rp.pages.Error503(w, pages.ErrorPageParams{ 2609 + LoggedInUser: user, 2610 + }) 2566 2611 return 2567 2612 } 2568 2613
+6 -2
appview/state/gfi.go
··· 28 28 repoLabels, err := db.GetRepoLabels(s.db, db.FilterEq("label_at", goodFirstIssueLabel)) 29 29 if err != nil { 30 30 log.Println("failed to get repo labels", err) 31 - s.pages.Error503(w) 31 + s.pages.Error503(w, pages.ErrorPageParams{ 32 + LoggedInUser: user, 33 + }) 32 34 return 33 35 } 34 36 ··· 57 59 ) 58 60 if err != nil { 59 61 log.Println("failed to get issues", err) 60 - s.pages.Error503(w) 62 + s.pages.Error503(w, pages.ErrorPageParams{ 63 + LoggedInUser: user, 64 + }) 61 65 return 62 66 } 63 67

History

1 round 2 comments
sign up or login to add to the discussion
serendipty01.dev submitted #0
1 commit
expand
appview: add logged in user in 503 error pages
expand 2 comments

I think saving logged in user in context can be better. Similar to how we pass the issue with context.

Thanks, let me rework my PRs. I'll close these and raise new ones.

closed without merging