[PR #6488] Improve reverse proxy forbidden page to match connection error UI #28317

Open
opened 2026-08-05 08:06:09 -04:00 by saavagebueno · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/netbirdio/netbird/pull/6488
Author: @chiqors
Created: 6/20/2026
Status: 🔄 Open

Base: mainHead: forbidden-page-ui


📝 Commits (5)

  • 4ecb39e feat: implement forbidden page
  • 79df060 enhance: design inspired connection error page style to forbidden page
  • c3f66fe fix: keep hooks order stable in reverse proxy error page
  • e3a381c fix: add request id fallback on reverse proxy error page
  • c9c5eb0 Merge branch 'netbirdio:main' into forbidden-page-ui

📊 Changes

5 files changed (+96 additions, -25 deletions)

View changed files

📝 proxy/internal/auth/middleware.go (+11 -3)
📝 proxy/web/dist/assets/index.js (+6 -6)
📝 proxy/web/src/ErrorPage.tsx (+77 -16)
📝 proxy/web/src/data.ts (+1 -0)
📝 proxy/web/web.go (+1 -0)

📄 Description

Describe your changes

This updates the reverse proxy forbidden page to better match the existing NetBird connection error page visual language.

The forbidden state now uses the same overall structure and styling cues as the connection error page, while keeping messaging specific to private-access / policy-blocked requests.

Main updates:

  • redesign the reverse proxy forbidden page to align with the existing connection error page layout
  • add a policy-focused status flow for the 403 forbidden state
  • keep request ID and timestamp visible on the forbidden page
  • update the embedded proxy web bundle so the new UI is included in the shipped image

Screenshots

Before
current_forbidden

After
image

N/A

Stack

Checklist

  • Is it a bug fix
  • Is a typo/documentation fix
  • Is a feature enhancement
  • It is a refactor
  • Created tests that fail without the change (if possible)
  • This change does not modify the public API, gRPC protocols, functionality behavior, CLI / service flags, or introduce a new feature — or I have discussed it with the NetBird team beforehand (link the issue / Slack thread in the description). See CONTRIBUTING.md.

By submitting this pull request, you confirm that you have read and agree to the terms of the Contributor License Agreement.

Documentation

Select exactly one:

  • I added/updated documentation for this change
  • Documentation is not needed for this change (explain why)

Why: this is a UI-only change for the reverse proxy forbidden page and does not change configuration, API behavior, or deployment flow.

Docs PR URL (required if "docs added" is checked)

N/A

Summary by CodeRabbit

Release Notes

  • New Features

    • Enhanced the access-denied experience for forbidden requests with clearer messaging, policy/destination failure indicators, request ID fallback (“Unavailable”), ISO timestamp, and improved refresh/redirect and documentation actions.
  • Bug Fixes

    • Standardized 403 forbidden responses so both security gate failures and IP-restriction denials render the same access-denied page with descriptive details (including consistent request-ID handling when available).

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/netbirdio/netbird/pull/6488 **Author:** [@chiqors](https://github.com/chiqors) **Created:** 6/20/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `forbidden-page-ui` --- ### 📝 Commits (5) - [`4ecb39e`](https://github.com/netbirdio/netbird/commit/4ecb39e2eb767163f02542f34391728fde04d13b) feat: implement forbidden page - [`79df060`](https://github.com/netbirdio/netbird/commit/79df060e83f0759edf5255277eb632614526b482) enhance: design inspired connection error page style to forbidden page - [`c3f66fe`](https://github.com/netbirdio/netbird/commit/c3f66febb279578027f9a0a3a9c82ddb60fd6c6b) fix: keep hooks order stable in reverse proxy error page - [`e3a381c`](https://github.com/netbirdio/netbird/commit/e3a381c06df02ae66bd2d3f28ebc5ba0264cb38e) fix: add request id fallback on reverse proxy error page - [`c9c5eb0`](https://github.com/netbirdio/netbird/commit/c9c5eb0f0a56a520a9f6798589feed328c529ca6) Merge branch 'netbirdio:main' into forbidden-page-ui ### 📊 Changes **5 files changed** (+96 additions, -25 deletions) <details> <summary>View changed files</summary> 📝 `proxy/internal/auth/middleware.go` (+11 -3) 📝 `proxy/web/dist/assets/index.js` (+6 -6) 📝 `proxy/web/src/ErrorPage.tsx` (+77 -16) 📝 `proxy/web/src/data.ts` (+1 -0) 📝 `proxy/web/web.go` (+1 -0) </details> ### 📄 Description ## Describe your changes This updates the reverse proxy forbidden page to better match the existing NetBird connection error page visual language. The forbidden state now uses the same overall structure and styling cues as the connection error page, while keeping messaging specific to private-access / policy-blocked requests. Main updates: - redesign the reverse proxy forbidden page to align with the existing connection error page layout - add a policy-focused status flow for the 403 forbidden state - keep request ID and timestamp visible on the forbidden page - update the embedded proxy web bundle so the new UI is included in the shipped image ### Screenshots Before <img width="397" height="166" alt="current_forbidden" src="https://github.com/user-attachments/assets/79bda031-bdce-4787-97ac-2b8357b0b389" /> After <img width="1099" height="628" alt="image" src="https://github.com/user-attachments/assets/8981f1c0-39d4-4a6e-9f99-4ed482efe115" /> ## Issue ticket number and link N/A ## Stack <!-- branch-stack --> ### Checklist - [ ] Is it a bug fix - [ ] Is a typo/documentation fix - [x] Is a feature enhancement - [ ] It is a refactor - [ ] Created tests that fail without the change (if possible) - [x] This change does **not** modify the public API, gRPC protocols, functionality behavior, CLI / service flags, or introduce a new feature — **or** I have discussed it with the NetBird team beforehand (link the issue / Slack thread in the description). See [CONTRIBUTING.md](https://github.com/netbirdio/netbird/blob/main/CONTRIBUTING.md#discuss-changes-with-the-netbird-team-first). > By submitting this pull request, you confirm that you have read and agree to the terms of the [Contributor License Agreement](https://github.com/netbirdio/netbird/blob/main/CONTRIBUTOR_LICENSE_AGREEMENT.md). ## Documentation Select exactly one: - [ ] I added/updated documentation for this change - [x] Documentation is **not needed** for this change (explain why) Why: this is a UI-only change for the reverse proxy forbidden page and does not change configuration, API behavior, or deployment flow. ### Docs PR URL (required if "docs added" is checked) N/A <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Release Notes * **New Features** * Enhanced the access-denied experience for forbidden requests with clearer messaging, policy/destination failure indicators, request ID fallback (“Unavailable”), ISO timestamp, and improved refresh/redirect and documentation actions. * **Bug Fixes** * Standardized 403 forbidden responses so both security gate failures and IP-restriction denials render the same access-denied page with descriptive details (including consistent request-ID handling when available). <!-- end of auto-generated comment: release notes by coderabbit.ai --> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
saavagebueno added the pull-request label 2026-08-05 08:06:09 -04:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DYNR/netbird#28317