user profiles
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
@@ -19,6 +20,50 @@ class AppServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function boot(): void
|
||||
{
|
||||
//
|
||||
// Product-related Gates
|
||||
Gate::define('create-product', function ($user) {
|
||||
return $user->hasAnyRole(['user', 'moderator', 'admin']);
|
||||
});
|
||||
|
||||
Gate::define('edit-product', function ($user, $product) {
|
||||
return $user->id === $product->user_id || $user->hasAnyRole(['moderator', 'admin']);
|
||||
});
|
||||
|
||||
Gate::define('delete-product', function ($user, $product) {
|
||||
return $user->id === $product->user_id || $user->hasAnyRole(['moderator', 'admin']);
|
||||
});
|
||||
|
||||
Gate::define('approve-product', function ($user) {
|
||||
return $user->hasAnyRole(['moderator', 'admin']);
|
||||
});
|
||||
|
||||
Gate::define('reject-product', function ($user) {
|
||||
return $user->hasAnyRole(['moderator', 'admin']);
|
||||
});
|
||||
|
||||
// Comment-related Gates
|
||||
Gate::define('delete-comment', function ($user, $comment) {
|
||||
return $user->id === $comment->user_id || $user->hasAnyRole(['moderator', 'admin']);
|
||||
});
|
||||
|
||||
// User management Gates
|
||||
Gate::define('manage-users', function ($user) {
|
||||
return $user->isAdmin();
|
||||
});
|
||||
|
||||
Gate::define('manage-roles', function ($user) {
|
||||
return $user->isAdmin();
|
||||
});
|
||||
|
||||
Gate::define('manage-settings', function ($user) {
|
||||
return $user->isAdmin();
|
||||
});
|
||||
|
||||
// Admin check
|
||||
Gate::before(function ($user, $ability) {
|
||||
if ($user->isAdmin()) {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user