user profiles

This commit is contained in:
2026-02-06 14:33:11 +02:00
parent d458e36f4f
commit b2fd2a5eac
20 changed files with 3936 additions and 9 deletions
+46 -1
View File
@@ -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;
}
});
}
}