forgetCachedPermissions(); // --- Create Tier Roles --- $admin = Role::findOrCreate('admin', 'web'); Role::findOrCreate('free', 'web'); Role::findOrCreate('pro', 'web'); Role::findOrCreate('enterprise', 'web'); // --- Permissions (admin-only) --- $manageMailsPerm = Permission::findOrCreate('manage mails', 'web'); $managePanelsPerm = Permission::findOrCreate('manage panels', 'web'); $admin->syncPermissions([$manageMailsPerm, $managePanelsPerm]); // --- Migrate legacy 'user' role to 'free' --- $legacyRole = Role::where('name', 'user')->where('guard_name', 'web')->first(); if ($legacyRole) { // Move all users with 'user' role to 'free' $usersWithLegacyRole = \App\Models\User::role('user')->get(); foreach ($usersWithLegacyRole as $user) { $user->removeRole('user'); $user->assignRole('free'); } $legacyRole->delete(); } } }