> ## Documentation Index
> Fetch the complete documentation index at: https://docs.unleash-commerce.eu/llms.txt
> Use this file to discover all available pages before exploring further.

# Policies Reference

> List of available authorization policies in the admin panel

## Available Policies

The admin panel includes authorization policies for all resources. Each policy controls who can view, create, update, and delete records.

| Policy                     | Resource             | Namespace                                       | Standard Methods             |
| -------------------------- | -------------------- | ----------------------------------------------- | ---------------------------- |
| AdminPolicy                | AdminUser            | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| BannerPolicy               | Banner               | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| CategoryPolicy             | Category             | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| CountryPolicy              | Country              | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| CustomerPolicy             | Customer             | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| FormEntryPolicy            | FormEntry            | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| HighlightPolicy            | Highlight            | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| MediaEntryPolicy           | MediaEntry           | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| MediaTypePolicy            | MediaType            | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| NotificationTemplatePolicy | NotificationTemplate | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| OrderPolicy                | Order                | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| PagePolicy                 | Page                 | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| PermissionGroupPolicy      | PermissionGroup      | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| PermissionPolicy           | Permission           | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| PopupPolicy                | Popup                | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| ProductPolicy              | Product              | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| ShippingOptionPolicy       | ShippingOption       | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| TranslationPolicy          | Translation          | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |
| UserPolicy                 | User                 | `Esign\UnleashCommerce\Admin\Filament\Policies` | view, create, update, delete |

## Policy Methods

All policies implement the standard authorization methods:

* **view()** - Controls visibility of records in lists and detail pages
* **create()** - Controls whether users can create new records
* **update()** - Controls whether users can edit records
* **delete()** - Controls whether users can delete records

## Super Admin Support

Policies are designed to support super admin functionality:

* Return `true` to grant permission
* Return `null` to let the super admin check take over
* Return `false` to deny permission (even for super admins)

```php theme={null}
public function delete(AdminUser $user, Product $product): bool|null
{
    if ($user->isSuperAdmin()) {
        return true;
    }

    if ($user->can('delete-products')) {
        return true;
    }

    return null; // Let super admin check decide
}
```

## Policy Contracts

All policies have corresponding contracts for customization:

```php theme={null}
// Core policy contract
Esign\UnleashCommerce\Admin\Contracts\Filament\Policies\ProductPolicy

// Your custom implementation
app(FilamentPolicyManifest::class)->replace(
    ProductPolicyContract::class,
    CustomProductPolicy::class
);
```

## Policy Registration

Policies are automatically registered via the `FilamentPolicyManifest`. To replace a policy:

```php theme={null}
use Esign\UnleashCommerce\Admin\Support\FilamentPolicyManifest;
use Esign\UnleashCommerce\Admin\Contracts\Filament\Policies\Product as ProductPolicyContract;

public function boot()
{
    app(FilamentPolicyManifest::class)->replace(
        ProductPolicyContract::class,
        CustomProductPolicy::class
    );
}
```

For more details, see the [Custom Policies guide](../extending/policies.mdx).
