https://github.com/tomatophp/filament-users
Manage your users with a highly customizable user resource for FilamentPHP with integration of filament-shield and filament-impersonate
https://github.com/tomatophp/filament-users
authentication filamentphp user user-crud user-resource
Last synced: about 1 year ago
JSON representation
Manage your users with a highly customizable user resource for FilamentPHP with integration of filament-shield and filament-impersonate
- Host: GitHub
- URL: https://github.com/tomatophp/filament-users
- Owner: tomatophp
- License: mit
- Created: 2023-09-27T15:32:25.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2025-03-24T11:58:57.000Z (about 1 year ago)
- Last Synced: 2025-04-04T00:30:09.680Z (about 1 year ago)
- Topics: authentication, filamentphp, user, user-crud, user-resource
- Language: PHP
- Homepage: https://tomatophp.com/en/open-source/filament-users
- Size: 4.15 MB
- Stars: 60
- Watchers: 2
- Forks: 24
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
- Security: .github/SECURITY.md
Awesome Lists containing this project
README

# Filament Users Manager
[](https://github.com/tomatophp/filament-users/actions/workflows/dependabot/dependabot-updates)
[](https://github.com/tomatophp/filament-users/actions/workflows/fix-php-code-styling.yml)
[](https://github.com/tomatophp/filament-users/actions/workflows/tests.yml)
[](https://packagist.org/packages/tomatophp/filament-users)
[](https://packagist.org/packages/tomatophp/filament-users)
[](https://packagist.org/packages/tomatophp/filament-users)
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](https://github.com/3x1io/filament-user)
## Features
- [x] Users Resource
- [x] Allow To Publish User Resource
- [x] Allow To Use Shield
- [x] Allow To Use Impersonate
- [x] Allow To Use Facade Class to custom the current user resource
- [x] Integration with Laravel Jetstream teams
- [x] custom User model from config file
- [x] custom Team model from config file
- [x] custom Role model from config file
- [ ] Laravel Jetsream user profile page
- [ ] Allow User / Teams Avatars
- [ ] Custom Register/Login Pages for Laravel Jetstream
- [ ] Add OTP Page to Register process
## Screenshots









## Installation
```bash
composer require tomatophp/filament-users
```
finally register the plugin on `/app/Providers/Filament/AdminPanelProvider.php`
```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
```bash
composer require bezhansalleh/filament-shield
```
Add the Spatie\Permission\Traits\HasRoles trait to your User model(s):
```php
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:
```php
->plugin(\BezhanSalleh\FilamentShield\FilamentShieldPlugin::make())
```
Now run the following command to install shield:
```bash
php artisan shield:install
```
Now we can [publish the package assets]([https://github.com/bezhanSalleh/filament-shield](https://github.com/tomatophp/filament-users?tab=readme-ov-file#publish-assets)).
```bash
php artisan vendor:publish --tag="filament-users-config"
```
now on your `filament-users.php` config allow shield
```php
/*
* User Filament Shield
*/
"shield" => true,
```
now clear your config
```bash
php artisan config:cache
```
for more information check the [Filament Shield](https://github.com/bezhanSalleh/filament-shield)
## Use Filament Impersonate
you can use the impersonate to impersonate the user by install it first
```bash
composer require stechstudio/filament-impersonate
```
now on your `filament-users.php` config allow shield
```php
/*
* User Filament Impersonate
*/
"impersonate" => true,
```
now clear your config
```bash
php artisan config:cache
```
for more information check the [Filament Impersonate](https://github.com/stechstudio/filament-impersonate)
## Use Laravel Jetstream Teams
you can use the Laravel Jetstream Teams by install it first
```bash
composer require laravel/jetstream
```
now you need to install the jetstream with livewire
```bash
php artisan jetstream:install livewire
```
go to `jetstream.php` and allow teams feature
```php
'features' => [
// Features::termsAndPrivacyPolicy(),
// Features::profilePhotos(),
// Features::api(),
Features::teams(['invitations' => true]),
// Features::accountDeletion(),
],
```
now you need to publish teams migration from jetstream
```bash
php artisan vendor:publish --tag=jetstream-teams-migrations
```
now you need to migrate the teams migration
```bash
php artisan migrate
```
now on your `filament-users.php` config allow shield
```php
/*
* User Filament Teams
*/
"teams" => true,
```
now clear your config
```bash
php artisan config:cache
```
## Publish Resource
you can publish the resource to your project
```bash
php artisan filament-users:publish
```
it will publish the resource to your project
than go to `filament-users.php` config file and change the `publish_resource` to `true`
## Register User Relation Manager
you can register the user relation manager to your project
```php
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
```php
use TomatoPHP\FilamentUsers\Resources\UserResource\Table\UserTable;
public function boot()
{
UserTable::register([
\Filament\Tables\Columns\TextColumn::make('something')
]);
}
```
### Table Actions
```php
use TomatoPHP\FilamentUsers\Resources\UserResource\Table\UserActions;
public function boot()
{
UserActions::register([
\Filament\Tables\Actions\ReplicateAction::make()
]);
}
```
### Table Filters
```php
use TomatoPHP\FilamentUsers\Resources\UserResource\Table\UserFilters;
public function boot()
{
UserFilters::register([
\Filament\Tables\Filters\SelectFilter::make('something')
]);
}
```
### Table Bulk Actions
```php
use TomatoPHP\FilamentUsers\Resources\UserResource\Table\UserBulkActions;
public function boot()
{
UserBulkActions::register([
\Filament\Tables\BulkActions\DeleteAction::make()
]);
}
```
### From Components
```php
use TomatoPHP\FilamentUsers\Resources\UserResource\Form\UserForm;
public function boot()
{
UserForm::register([
\Filament\Forms\Components\TextInput::make('something')
]);
}
```
### Page Actions
```php
use TomatoPHP\FilamentUsers\Resources\UserResource\Actions\ManageUserActions;
use TomatoPHP\FilamentUsers\Resources\UserResource\Actions\EditPageActions;
use TomatoPHP\FilamentUsers\Resources\UserResource\Actions\ViewPageActions;
use TomatoPHP\FilamentUsers\Resources\UserResource\Actions\CreatePageActions;
public function boot()
{
ManageUserActions::register([
Filament\Actions\Action::make('action')
]);
EditPageActions::register([
Filament\Actions\Action::make('action')
]);
ViewPageActions::register([
Filament\Actions\Action::make('action')
]);
CreatePageActions::register([
Filament\Actions\Action::make('action')
]);
}
```
### Infolist Entries
```php
use TomatoPHP\FilamentUsers\Resources\UserResource\Infolist\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
```php
/**
* ---------------------------------------------
* 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\Form\UserForm::class
],
'infolist' => [
'class' => \TomatoPHP\FilamentUsers\Resources\UserResource\InfoList\UserInfoList::class
],
'pages' => [
'list' => \TomatoPHP\FilamentUsers\Resources\UserResource\Actions\ManageUserActions::class,
'create' => \TomatoPHP\FilamentUsers\Resources\UserResource\Actions\CreatePageActions::class,
'edit' => \TomatoPHP\FilamentUsers\Resources\UserResource\Actions\EditPageActions::class,
'view' => \TomatoPHP\FilamentUsers\Resources\UserResource\Actions\ViewPageActions::class
]
]
```
## Use Simple User Resource
you can use the simple user resource by change on config, on your `filament-users.php` config allow simple
```php
/**
* ---------------------------------------------
* Use Simple Resource
* ---------------------------------------------
* change the resource from pages to modals by allow simple resource.
*/
'simple' => true,
```
## Publish Assets
you can publish config file by use this command
```bash
php artisan vendor:publish --tag="filament-users-config"
```
you can publish languages file by use this command
```bash
php artisan vendor:publish --tag="filament-users-lang"
```
## Testing
if you like to run `PEST` testing just use this command
```bash
composer test
```
## Code Style
if you like to fix the code style just use this command
```bash
composer format
```
## PHPStan
if you like to check the code by `PHPStan` just use this command
```bash
composer analyse
```
## Other Filament Packages
Checkout our [Awesome TomatoPHP](https://github.com/tomatophp/awesome)