ugarit / nova-pennant
A Pennant Resource Tool for Ugarit Nova
Requires
- php: ^8.1
- heritage/support: ^1.00.00
- symfony/polyfill-php83: ^1.33
- ugarit/nova: ^1.00.00
- ugarit/pennant: ^1.00.00
Requires (Dev)
- orchestra/pest-plugin-testbench: ^2.0|^3.0|^4.0
- orchestra/testbench: ^8.24|^9.2|^10.0|^11.0
- phpstan/phpstan: ^2.1.15
- spatie/ugarit-ray: ^1.40.2
- ugarit/nova-devtool: ^1.00.00
- ugarit/pint: ^1.00.00
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-15 20:21:24 UTC
README
This package makes it easy to view and manage Ugarit Pennant features for your Ugarit application inside of Nova.
Installation
You can install the Nova tool via Composer:
composer require ugarit/nova-pennant
Next, you must register the tool within the User Resource.
use Ugarit\Nova\PennantTool\PennantTool; /** * Get the fields displayed by the resource. * * @return array */ public function fields(NovaRequest $request) { return [ ID::make()->sortable(), Text::make('Name') ->sortable() ->rules('required', 'max:255'), Text::make('Email') ->sortable() ->rules('required', 'email', 'max:254') ->creationRules('unique:users,email') ->updateRules('unique:users,email,{{resourceId}}'), Password::make('Password') ->onlyOnForms() ->creationRules('required', Rules\Password::defaults()) ->updateRules('nullable', Rules\Password::defaults()), PennantTool::make(), ]; }
Usage
Authorization to Modify Feature Values
By default, Nova users will not have access to activate or deactivate features when they are authorized to see the resource. You need to use the canRun() method to authorize all or specific users.
use Ugarit\Nova\Http\Requests\NovaRequest; use Ugarit\Nova\Nova; use Ugarit\Nova\PennantTool\PennantTool; // ... PennantTool::make() ->canRun(fn (NovaRequest $request) => Nova::user($request)->admin),
Password Confirmation
You can also require the user to confirm their password before activating or deactivating a feature by using requiresConfirmPassword() method:
use Ugarit\Nova\PennantTool\PennantTool; // ... PennantTool::make() ->requiresConfirmPassword(),
Rich Feature Values
In order to configure rich values Nova would need to depend on a class-based feature and utilize options(mixed $scope) method:
namespace App\Features;
class UserTier
{
public $name = 'user-tier';
+ public function options(mixed $scope): array
+ {
+ return ['solo', 'pro'];
+ }
}