User Manager plugin screenshot
Dark mode ready
Multilingual support
Supports v5.x

User Manager

User Resource For FilamentPHP Admin Dashboard

Tags: Panel Authentication
Supported versions:
3.x 2.x
Fady Mondy avatar Author: Fady Mondy

Documentation

Screenshot

Dependabot Updates PHP Code Styling Tests Latest Stable Version License Downloads

Manage your users with a highly customizable user resource for FilamentPHP with integration of filament-shield and filament-impersonate.

for filament v2 please use this repo

#Features

  • Users Resource
  • Allow To Publish User Resource
  • Allow To Use Shield
  • Allow To Use Impersonate
  • Allow To Use Facade Class to custom the current user resource
  • Integration with Laravel Jetstream teams
  • custom User model from config file
  • custom Team model from config file
  • custom Role model from config file
  • Allow User Avatars
  • Laravel Jetsream user profile page
  • Custom Register/Login Pages for Laravel Jetstream
  • Add OTP Page to Register process

#Screenshots

Users List Create User Edit User Users Filters Delete Current User Impersonate Shield Roles Bulk Action Edit Roles

#Installation

composer require tomatophp/filament-users

finally register the plugin on /app/Providers/Filament/AdminPanelProvider.php

->plugin(\TomatoPHP\FilamentUsers\FilamentUsersPlugin::make())

#Use Filament Shield

you can use the shield to protect your resource and allow user roles by install it first

composer require bezhansalleh/filament-shield

Add the Spatie\Permission\Traits\HasRoles trait to your User model(s):

use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable
{
    use HasRoles;

    // ...
}

Publish the config file then setup your configuration:

->plugin(\BezhanSalleh\FilamentShield\FilamentShieldPlugin::make())

Now run the following command to install shield:

php artisan shield:setup
php artisan shield:super_admin

Now we can publish the package assets.

php artisan vendor:publish --tag="filament-users-config"

now on your filament-users.php config allow shield

/*
 * User Filament Shield
 */
"shield" => true,

now clear your config

php artisan config:cache
php artisan optimize

for more information check the Filament Shield

#Use Filament Impersonate

now on your filament-users.php config allow shield

/*
 * User Filament Impersonate
 */
"impersonate" => [
    'enable' => true
],

now clear your config

php artisan config:cache
php artisan optimize

#Use Laravel Jetstream Teams

you can use the Laravel Jetstream Teams by install it first

composer require laravel/jetstream

after that just publish the migration and models

php artisan filament-users:teams

now you need to migrate the teams migration

php artisan migrate

now on your filament-users.php config allow shield

/*
 * User Filament Teams
 */
"teams" => true,

now clear your config

php artisan config:cache
php artisan optimize

#Publish Resource

you can custom the resource by just extend it and then make ->useUserResource(false) or ->useTeamsResource(false) to the plugin

#Register User Relation Manager

you can register the user relation manager to your project

use TomatoPHP\FilamentUsers\Facades\FilamentUser;

public function boot()
{
    FilamentUser::register([
        \Filament\Resources\RelationManagers\RelationManager::make() // Replace with your custom relation manager
    ]);
}

#User Users Resource Hooks

we have add a lot of hooks to make it easy to attach actions, columns, filters, etc

#Table Columns

use TomatoPHP\FilamentUsers\Filament\Resources\Users\Tables\UserTable;

public function boot()
{
    UsersTable::register([
        \Filament\Tables\Columns\TextColumn::make('something')
    ]);
}

#Table Actions

use TomatoPHP\FilamentUsers\Filament\Resources\Users\Tables\UserActions;

public function boot()
{
    UserActions::register([
        \Filament\Tables\Actions\ReplicateAction::make()
    ]);
}

#Table Filters

use TomatoPHP\FilamentUsers\Filament\Resources\Users\Tables\UserFilters;

public function boot()
{
    UserFilters::register([
        \Filament\Tables\Filters\SelectFilter::make('something')
    ]);
}

#Table Bulk Actions

use TomatoPHP\FilamentUsers\Filament\Resources\Users\Tables\UserBulkActions;

public function boot()
{
    UserBulkActions::register([
        \Filament\Tables\BulkActions\DeleteAction::make()
    ]);
}

#From Components

use TomatoPHP\FilamentUsers\Filament\Resources\Users\Schemas\UserForm;

public function boot()
{
    UserForm::register([
        \Filament\Forms\Components\TextInput::make('something')
    ]);
}

#Infolist Entries

use TomatoPHP\FilamentUsers\Filament\Resources\Users\Schemas\UserInfolist;

public function boot()
{
    UserInfolist::register([
       \Filament\Infolists\Components\TextEntry::make('something')
    ]);
}

#Custom Resource Classes

you can customize all resource classes to be any class you want with the same return from the config file

/**
 * ---------------------------------------------
 * Resource Building
 * ---------------------------------------------
 * if you want to use the resource custom class
 */
'resource' => [
    'table' => [
        'class' => \TomatoPHP\FilamentUsers\Resources\UserResource\Table\UserTable::class,
        'filters' => \TomatoPHP\FilamentUsers\Resources\UserResource\Table\UserFilters::class,
        'actions' => \TomatoPHP\FilamentUsers\Resources\UserResource\Table\UserActions::class,
        'bulkActions' => \TomatoPHP\FilamentUsers\Resources\UserResource\Table\UserBulkActions::class,
    ],
    'form' => [
        'class' => \TomatoPHP\FilamentUsers\Resources\UserResource\Schemas\UserForm::class
    ],
    'infolist' => [
        'class' => \TomatoPHP\FilamentUsers\Resources\UserResource\Schemas\UserInfolist::class
    ]
]

#Use Simple User Resource

you can use the simple user resource by change on config, on your filament-users.php config allow simple

/**
 * ---------------------------------------------
 * Use Simple Resource
 * ---------------------------------------------
 * change the resource from pages to modals by allow simple resource.
 */
'simple' => true,

#Use User Avatar

you can use User Avatar by just add ->useAvatar() to the plugin

#Publish Assets

you can publish config file by use this command

php artisan vendor:publish --tag="filament-users-config"

you can publish languages file by use this command

php artisan vendor:publish --tag="filament-users-lang"

#Testing

if you like to run PEST testing just use this command

composer test

#Code Style

if you like to fix the code style just use this command

composer format

#PHPStan

if you like to check the code by PHPStan just use this command

composer analyse

#Other Filament Packages

Checkout our Awesome TomatoPHP