- What is silvanite/brandenburg and how does it handle roles and permissions?
- Brandenburg is a Laravel Nova tool that gives you CRUD screens for defining roles and granular permissions, assigning them to users, and managing the underlying records. It is not a standalone authorization engine: the actual storage and enforcement come from spatie/laravel-permission plus Laravel's native Gate and Policy systems. Think of it as an admin UI layer rather than a new permission model.
- Do I need Laravel Nova to use Brandenburg?
- Yes. Brandenburg is a Nova tool, so it requires a licensed Laravel Nova installation plus spatie/laravel-permission. It delivers no value in a non-Nova application, and only marginal value in a Nova app where you already have hand-rolled role and permission resources. For API-only or headless products, use Spatie's API directly and skip this package.
- Does Brandenburg work with Laravel Nova 4 or Nova 5?
- Treat Nova 4 and 5 as unsupported until proven otherwise. Brandenburg's last release was in September 2020 and was built against Nova 3's Vue 2 frontend and mix pipeline, while Nova 4 moved to Vue 3 with Inertia and changed the tool scaffolding. A drop-in install on Nova 4+ is unlikely without porting the tool's components, so validate with a short timeboxed spike on your real stack before committing.
- Which version of spatie/laravel-permission does Brandenburg require?
- There is no published compatibility matrix, but the package predates Spatie v5 and v6, so expect it to have been built against the v4 era API. Spatie's newer releases changed permission caching behaviour and teams semantics, which are exactly the areas a management UI touches. Check the composer.json constraints and confirm whether teams, multiple guards, and wildcard permissions are supported before relying on it.
- How do I install and register Brandenburg in a Laravel application?
- Installation is a Composer require, registering the tool in the tools() array of your NovaServiceProvider, and typically publishing the package assets and config. You then confirm your guard names line up with what Spatie expects and that the UI points at the correct roles and permissions tables. There is no runtime service provider dependency in the request path, so installation does not affect how authorization is evaluated.
- Does Brandenburg create its own database tables or migrations?
- No. All persistence belongs to spatie/laravel-permission, so you run Spatie's migrations as usual and Brandenburg simply writes to those existing roles and permissions tables. That keeps the data model clean and means rollback is just removing the tool registration from NovaServiceProvider. There is nothing extra to migrate or roll back beyond Spatie's own schema.
- Is Brandenburg still maintained, and does it support PHP 8.3 and Laravel 11?
- There has been no release since September 2020, which means no validated support for PHP 8.2 or 8.3, Laravel 10 or 11, or Nova 4 and 5, and no security triage. The bigger practical risk is that its Composer constraints can pin your framework version and block upgrades. Budget for a compatibility spike on your exact stack or plan to fork and maintain it yourself under the MIT licence.
- How do I check permissions in Blade views and gates with Brandenburg?
- Enforcement stays entirely with Laravel and Spatie: use Gate and Policy checks in your controllers, can() middleware, and the @can, @role and @hasrole Blade directives for conditional UI. Brandenburg does not hook into the request path, so it never changes authorization semantics. That separation is what makes the package safe to add or remove without touching your access rules.
- How do I secure the Brandenburg screens so only trusted admins can assign roles?
- Confirm the tool respects Nova's authorizationGate and canSee callbacks so it is not exposed to every Nova user. Then verify the assignment UI constrains operators to the roles and permissions they already hold, otherwise you create a lateral privilege-escalation path where an admin grants themselves more access. Brandenburg ships no audit trail, so add logging around permission changes yourself, since those are security-relevant events.
- What are the alternatives to Brandenburg if it is unmaintained?
- The most cost-effective replacement is two Nova resources, Role and Permission, using BelongsToMany fields plus a roles() field on your User resource, which is roughly one to two days of work and removes the dependency entirely. If you are staying on Nova 3, you can fork Brandenburg and port or maintain its Vue components for newer Nova versions. Either way, removing the package is just deleting the tool registration because Spatie remains the single source of truth.