appview: add user in 503 error pages #11

closed
opened by serendipty01.dev targeting master from push-prquzlvztlul
Changed files
+123 -48
appview
issues
pages
pulls
repo
state
+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