Weave Code
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

Users Roles Permissions Laravel Package

cwsps154/users-roles-permissions

Laravel package to manage users, roles, and permissions with a simple, structured approach. Assign roles to users, define permissions, and check access throughout your app. Lightweight and easy to integrate into existing projects.

View on GitHub
Deep Wiki
Context7
v1.0.4

Now support in Filament 4

v1.0.0

Filament Users Roles Permissions

Filament User & Roles & Permissions.

Installation

Install Using Composer

composer require cwsps154/filament-users-roles-permissions

Usage/Examples

Add this into your Filament PannelProvider class panel()

$panel->databaseNotifications() //need to see the export files for the permission
    ->databaseTransactions() //optional
    ->plugins([FilamentUsersRolesPermissionsPlugin::make()]); //required to enable this extension

You can also update UserResource using setUserResource(UserResource::class) in the plugin

$panel->plugins([FilamentUsersRolesPermissionsPlugin::make()->setUserResource(UserResource::class)]);

You can create custom UserResource and extend CWSPS154\FilamentUsersRolesPermissions\Filament\Clusters\UserManager\Resources\UserResource as CoreUserResource

Add the CWSPS154\FilamentUsersRolesPermissions\Models\HasRole trait in User Model

use HasRole;

And the User model should implements these interfaces's Spatie\MediaLibrary\HasMedia, Filament\Models\Contracts\HasAvatar and Filament\Models\Contracts\FilamentUser

implements HasMedia, HasAvatar, FilamentUser

Also don't forget add these in you User model

    /**
     * The attributes that are mass assignable.
     *
     * [@var](https://github.com/var) array<int, string>
     */
    protected $fillable = [
        'name',
        'email',
        'mobile',
        'password',
        'role_id',
        'last_seen',
        'is_active'
    ];

    /**
     * The attributes that should be hidden for serialization.
     *
     * [@var](https://github.com/var) array<int, string>
     */
    protected $hidden = [
        'password',
        'remember_token',
    ];

    /**
     * Get the attributes that should be cast.
     *
     * [@return](https://github.com/return) array<string, string>
     */
    protected function casts(): array
    {
        return [
            'email_verified_at' => 'datetime',
            'password' => 'hashed',
            'last_seen' => 'datetime',
            'is_active' => 'boolean',
        ];
    }

Run

php artisan make:queue-batches-table
php artisan make:notifications-table //ensure these queues and notifications migrates are published
php artisan vendor:publish --tag=filament-actions-migrations //publish filament import and export migrations
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="medialibrary-migrations" //publish spatie media provider
php artisan filament-users-roles-permissions:install

By default, you will get the user which have email admin@gmail.com & password admin@123.

Add this in the \Filament\Panel\Concerns\HasPlugins::plugins() method

FilamentUsersRolesPermissionsPlugin::make(),

Note: For the user which is_admin user have all permission by default.

You can publish the config file filament-users-roles-permissions.php, by running this command

php artisan vendor:publish --tag=filament-users-roles-permissions-config

which contains these settings

return [
    'user_manager' => [
        'layout' => null,
        'navigation' => [
            'title' => 'filament-users-roles-permissions::users-roles-permissions.user.manager',
            'group' => 'filament-users-roles-permissions::users-roles-permissions.system',
            'label' => 'filament-users-roles-permissions::users-roles-permissions.user.manager',
            'icon' => 'heroicon-o-user-group',
            'sort' => 100,
        ],
        'user_resource' => [
            'layout' => null,
            'navigation' => [
                'title' => 'filament-users-roles-permissions::users-roles-permissions.user.resource.user.title',
                'group' => null,
                'label' => 'filament-users-roles-permissions::users-roles-permissions.user.resource.user',
                'icon' => 'heroicon-o-users',
                'sort' => 1,
            ]
        ],
        'role_resource' => [
            'layout' => null,
            'navigation' => [
                'title' => 'filament-users-roles-permissions::users-roles-permissions.role.resource.role.title',
                'group' => null,
                'label' => 'filament-users-roles-permissions::users-roles-permissions.role.resource.role',
                'icon' => 'heroicon-o-academic-cap',
                'sort' => 2,
            ]
        ],
        'permission_resource' => [
            'layout' => null,
            'navigation' => [
                'title' => 'filament-users-roles-permissions::users-roles-permissions.permission.resource.permission.title',
                'group' => null,
                'label' => 'filament-users-roles-permissions::users-roles-permissions.permission.resource.permission',
                'icon' => 'heroicon-o-finger-print',
                'sort' => 3,
            ]
        ]
    ]
];

Also you can create additional permissions using permissions.php config file also it will override already existing permissions.The format

<?php

use CWSPS154\FilamentUsersRolesPermissions\Models\Permission;

$panelIds = ['test s'];

return [
    'test' => [
        'name' => 'Test',
        'panel_ids'=> $panelIds,
        'route' => null,
        'status' => true,
        'children' => [
            'test-2' => [
                'name' => 'Test2',
                'panel_ids'=> $panelIds,
                'route' => null,
                'status' => true,
            ]
        ]
    ],
    Permission::PERMISSION => [
        'name' => 'Permission',
        'panel_ids'=> $panelIds,
        'route' => null,
        'status' => true,
        'children' => [
            Permission::VIEW_PERMISSION => [
                'name' => 'View Permission',
                'panel_ids'=> $panelIds,
                'route' => 'user-manager.resources.permissions.index',
                'status' => true,
            ],
            Permission::CREATE_PERMISSION => [
                'name' => 'Create Permission',
                'panel_ids'=> $panelIds,
                'route' => null,
                'status' => true,
            ],
        ]
    ],
];

Note:Override may do in random manner for packages, the project config have more priority

In your languages directory, add an extra translation for the mobile field by propaganistas/laravel-phone

Note:run this command to publish lang folder php artisan lang:publish

'phone' => 'The :attribute field must be a valid number.',

Screenshots

App Screenshot

App Screenshot

App Screenshot

App Screenshot

App Screenshot

App Screenshot

App Screenshot

App Screenshot

App Screenshot

App Screenshot

App Screenshot

App Screenshot

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.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky