Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Nova Pennant Laravel Package

laravel/nova-pennant

Manage Laravel Pennant feature flags in Laravel Nova. Add the PennantTool to a resource to view and toggle features per scope, control who can modify values with canRun(), require password confirmation, and support rich/class-based feature options.

View on GitHub
Deep Wiki
Context7

Nova Pennant

This package makes it easy to view and manage Laravel Pennant features for your Laravel application inside of Nova.

Installation

You can install the Nova tool via Composer:

composer require laravel/nova-pennant

Next, you must register the tool within the User Resource.

use Laravel\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 Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\Nova;
use Laravel\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 Laravel\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'];
+   }
}
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
bernskioldmedia/laravel-matomo
bernskioldmedia/laravel-harvest
bernskiold/laravel-data-scrubber
bernskiold/laravel-currency-converter
bernskiold/laravel-campaign-monitor
bernskioldmedia/laravel-autotranslate
siberfx/telegram-bot
roy-sandip/laravel-view-extended
gregsphotography/site-builder-core
roy-sandip/laravel-view
anodyne/blade-fluentui-icons
webx-ui/module-catalog-collections
webx-ui/module-catalog-feeds
makidizajnerica/laravel-dto
matviib/scheduler
webx-ui/templates
anodyne/blade-tabler-icons
bref/laravel-websockets
anodyne/blade-hugeicons
1994/flatpack-statamic