1. Go to this page and download the library: Download codenzia/laravel-superadmin library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
codenzia / laravel-superadmin example snippets
use Codenzia\SuperAdmin\Facades\SuperAdmin;
class UserSeeder extends Seeder
{
public function run(): void
{
SuperAdmin::ensure([
'name' => 'Super Admin',
'email' => '[email protected]',
'password' => 'your-strong-password',
]);
}
}
class User extends Authenticatable
{
use IsSuperAdmin;
// is_protected is intentionally NOT fillable. Only the package's
// SuperAdmin::install() / SuperAdmin::ensure() (which wrap the
// assignment in SuperAdmin::withoutProtection()) may set it.
protected $fillable = ['name', 'email', 'password', 'phone', 'slug'];
}
return [
// v0.4.0+: identity (name / email / password / role) is NOT in this
// config and NOT in env. See "Override the defaults" above — defaults
// are seeder-driven via SuperAdmin::ensure([...]) or derived.
'user_model' => null, // null = resolved from auth.providers
'auto_install' => env('SUPER_ADMIN_AUTO_INSTALL', true), // create user on MigrationsEnded
'authorization' => ['gate_before' => true], // super admin passes every can()
'protection' => ['enabled' => env('SUPER_ADMIN_PROTECTION', true)],
'late_role_assignment' => env('SUPER_ADMIN_LATE_ROLE_ASSIGNMENT', true), // attach role when row appears later
'filament' => [
'hide_destructive_actions' => true, // master switch for the Filament plugin
// Row actions auto-hidden on the protected user row. Apps extend by
// merging their own entries — see "Filament" section below.
'hidden_action_names' => [
'delete', 'forceDelete',
'suspend', 'unsuspend', 'ban', 'unban',
'markEmailVerified', 'verify', 'unverify',
'impersonate', 'demote',
],
// Form fields auto-disabled when editing the protected user.
'locked_field_names' => [
'roles', 'role', 'permissions',
'status', 'is_protected', 'email', 'user_type',
],
],
];
use Codenzia\SuperAdmin\Facades\SuperAdmin;
class DatabaseSeeder extends Seeder
{
public function run(): void
{
// (a) No args — idempotent get-or-create.
// Returns the existing protected user, or creates one with
// defaultName() / defaultEmail() / defaultPassword().
$superAdmin = SuperAdmin::ensure();
// (b) With array — force-applies the supplied fields. Use this
// to pin app-specific values that survive every reseed.
$superAdmin = SuperAdmin::ensure([
'name' => 'Super Admin',
'email' => '[email protected]',
'password' => 'your-strong-password',
]);
}
}
use Codenzia\SuperAdmin\Concerns\IsSuperAdmin;
class User extends Authenticatable
{
use IsSuperAdmin;
}
$user->isSuperAdmin(); // bool
User::query()->superAdmin()->first(); // WHERE is_protected = true
User::query()->exceptSuperAdmin()->get(); // WHERE NOT is_protected
use Codenzia\SuperAdmin\Facades\SuperAdmin;
use Illuminate\Auth\Access\Response;
class UserPolicy
{
public function delete(User $actor, User $target): Response
{
if (SuperAdmin::is($target)) {
return Response::deny('The super admin account cannot be deleted.');
}
return $actor->can('delete_user') ? Response::allow() : Response::deny();
}
public function update(User $actor, User $target): Response
{
if (SuperAdmin::is($target) && ! SuperAdmin::is($actor)) {
return Response::deny('Only the super admin can modify the super admin account.');
}
return $actor->can('update_user') ? Response::allow() : Response::deny();
}
}
use Codenzia\SuperAdmin\Filament\SuperAdminPlugin;
$panel->plugin(SuperAdminPlugin::make());