Metadata-Version: 2.4
Name: netbox-hidebox
Version: 2.0.2
Summary: NetBox plugin to hide form fields per user group from the UI
Author-email: Sofien Aouni <contact@sofien.meme>
Maintainer: AOS
License: AGPL-3.0-or-later
Keywords: netbox,netbox-plugin,forms,permissions
Classifier: Framework :: Django
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# NetBox HideBox Plugin

**NetBox HideBox** is a powerful utility for NetBox administrators to clean up and customize the user interface. It allows you to dynamically hide specific form fields on a per-model basis, filtered by User Groups.

Whether you want to hide internal metadata from specific teams or simplify complex forms for non-technical users, HideBox provides a managed, UI-driven way to do it.

## Features

*   **UI-Driven Configuration:** No need to edit Python files to hide fields; manage everything through the "Field Hide Rules" menu.
*   **Dynamic Field Discovery:** Automatically inspects NetBox forms to list available fields for any selected Content Type (Device, IP Address, Virtual Machine, etc.).
*   **Group-Based Visibility:**
    *   Hide fields for **all users**.
    *   Hide fields **only for specific User Groups**.
*   **Safe Integration:** Uses safe monkey-patching on the base `NetBoxModelForm` to ensure compatibility across the entire NetBox ecosystem.
*   **Toggleable Rules:** Easily enable or disable rules without deleting them.
*   **Per-Session Reveal Toggle:** A button in the top navbar lets any logged-in user temporarily show all hidden fields for their current session, without changing any rules.

## Compatibility

| NetBox Version | Plugin Version |
|----------------|----------------|
| 4.3.0+         | 2.0.2          |
| 4.3.0+         | 1.3.0          |
| 4.2.0 – 4.2.8  | 1.2.3          |
| 4.2.0 – 4.2.6  | 1.2.1          |

## Installation

### 1. Install via Pip

pip install netbox-hidebox

*(Alternatively, if installing from source: `pip install .` from the root of the repository)*

### 2. Enable in NetBox
Add the plugin to your `configuration.py`:

PLUGINS = [
    'netbox_hidebox',
]

### 3. Run Migrations

python3 manage.py migrate netbox_hidebox

### 4. Restart NetBox

sudo systemctl restart netbox netbox-rq

## How It Works

1.  **Middleware:** The plugin includes a lightweight middleware that tracks the current user in the request thread.
2.  **Form Patching:** Upon startup, the plugin patches the `__init__` method of the core `NetBoxModelForm`.
3.  **Dynamic Logic:** Every time a form is initialized, the plugin checks the database for active rules matching that model. If the current user falls under the rule, the specified fields are programmatically converted to `HiddenInput` widgets.

## Usage

### Creating a Rule

1.  Navigate to **Plugins > HideBox > Field Hide Rules**.
2.  Click **Add**.
3.  **Name:** A descriptive name (e.g., "Hide VM Sensitive Tags").
4.  **Content Type:** Select the model you want to target (e.g., `virtualization | virtual machine`).
5.  **Fields to Hide:** Once the Content Type is selected, the plugin will load all available form fields. Check the boxes for fields you want to disappear.
6.  **Hide for Groups:**
    *   The fields are hidden **only for members** of the groups you select here.
    *   If left empty, the fields are hidden for **everyone**.
7.  **Enabled:** Keep checked to activate the rule.

### Revealing Hidden Fields

A toggle button appears in the **top navbar** (an eye icon). Clicking it temporarily reveals all hidden fields for your current session — useful when you occasionally need to see or edit a hidden field. The state is per-session and per-user; clicking again (eye-off icon) re-hides the fields. This does not modify any rules. Note that reveal is available to **all** authenticated users, consistent with HideBox being a UI tool rather than a security control.

## Security Note

**HideBox is a UI/UX enhancement tool.** 

Hiding a field prevents it from appearing in the browser-based forms. However, this plugin **does not** modify API permissions or database-level constraints. A user with API access and the correct NetBox permissions could still theoretically modify hidden fields via the REST API or custom scripts. For strict security enforcement, always use NetBox's built-in **Permissions** and **Constraints** system.
