🚀 Hostinger Optimized
🖥️ Server: LiteSpeed
💻 System: Linux s20058.bom1.stableserver.net 5.14.0-611.55.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 19 15:19:29 EDT 2026 x86_64
👤 User: skhata (1324)
🐘 PHP: 8.4.20
🚫 Disabled: ✨ NONE

💻 Terminal

📁 /home/skhata/chandrasons.com/public
$

📄 RolePermissionSeeder.php

📁 Path: //home/skhata/new.chandrapharma.com/database/seeders/RolePermissionSeeder.php
📊 Size: 3.64 KB
🔒 Perm: 0644
📝 MIME: text/x-php
<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
use Spatie\Permission\PermissionRegistrar;

/**
 * RolePermissionSeeder
 *
 * Creates the 5 Phase 1 roles and assigns permissions.
 *
 * Roles:
 *   super_admin     — full access, bypasses all policy checks
 *   vendor          — manage own products, orders, shop profile
 *   customer        — browse, cart, checkout, own orders
 *   delivery_agent  — update shipping status, mark delivered
 *   moderator       — review content, manage categories (no financial access)
 */
class RolePermissionSeeder extends Seeder
{
    public function run(): void
    {
        // Reset cached roles and permissions
        app()[PermissionRegistrar::class]->forgetCachedPermissions();

        // ── Define permissions ────────────────────────────────────────────────
        $permissions = [
            // Products
            'products.view', 'products.create', 'products.update', 'products.delete',
            'products.publish',

            // Categories & Brands
            'categories.manage', 'brands.manage',

            // Orders
            'orders.view', 'orders.view_all', 'orders.update_status',
            'orders.cancel', 'orders.refund',

            // Vendors
            'vendors.view', 'vendors.approve', 'vendors.suspend',

            // Users
            'users.view', 'users.manage',

            // Reports & Analytics
            'analytics.view', 'analytics.view_all',

            // Settings
            'settings.manage',

            // Delivery
            'delivery.update_shipping', 'delivery.mark_delivered',
        ];

        foreach ($permissions as $permission) {
            Permission::firstOrCreate(['name' => $permission, 'guard_name' => 'web']);
        }

        // ── Create roles & assign permissions ─────────────────────────────────

        // super_admin — gets everything via Gate::before() in AuthServiceProvider
        $superAdmin = Role::firstOrCreate(['name' => 'super_admin', 'guard_name' => 'web']);
        $superAdmin->syncPermissions(Permission::all());

        // vendor — manage own shop
        $vendor = Role::firstOrCreate(['name' => 'vendor', 'guard_name' => 'web']);
        $vendor->syncPermissions([
            'products.view', 'products.create', 'products.update', 'products.delete', 'products.publish',
            'orders.view', 'orders.update_status',
            'analytics.view',
        ]);

        // customer — shop only
        $customer = Role::firstOrCreate(['name' => 'customer', 'guard_name' => 'web']);
        $customer->syncPermissions([
            'orders.view',
        ]);

        // delivery_agent
        $deliveryAgent = Role::firstOrCreate(['name' => 'delivery_agent', 'guard_name' => 'web']);
        $deliveryAgent->syncPermissions([
            'orders.view',
            'delivery.update_shipping',
            'delivery.mark_delivered',
        ]);

        // moderator — content moderation
        $moderator = Role::firstOrCreate(['name' => 'moderator', 'guard_name' => 'web']);
        $moderator->syncPermissions([
            'products.view', 'products.update',
            'categories.manage', 'brands.manage',
            'vendors.view',
            'users.view',
            'analytics.view_all',
        ]);

        $this->command?->info('✅ Roles and permissions seeded:');
        $this->command?->line('   super_admin | vendor | customer | delivery_agent | moderator');
    }
}
← Back📥 Raw✏️ Edit🔒 Chmod
✨ File Manager Magic ✨