[ 'dashboard' => 'r', 'users' => 'r,c,u,d', 'banners' => 'r,c,u,d', 'business' => 'r,c,u,d', 'addons' => 'r,c', 'business-categories' => 'r,c,u,d', 'plans' => 'r,c,u,d', 'subscription-reports' => 'r', 'subscription-orders' => 'r', 'features' => 'r,c,u,d', 'domains' => 'r,c,u,d', 'interfaces' => 'r,c,u,d', 'testimonials' => 'r,c,u,d', 'blogs' => 'r,c,u,d', 'messages' => 'r,c,u,d', 'terms' => 'r,u', 'gateways' => 'r,u', 'currencies' => 'r,c,u,d', 'settings' => 'r,u', 'roles' => 'r,c,u,d', 'permissions' => 'r,c', 'notifications' => 'r,u', ], 'Admin' => [ 'dashboard' => 'r', 'users' => 'r,c,u,d', 'banners' => 'r,c,u,d', 'business' => 'r,c,u,d', 'addons' => 'r,c', 'business-categories' => 'r,c,u,d', 'plans' => 'r,c,u,d', 'domains' => 'r,c,u,d', 'subscription-reports' => 'r', 'features' => 'r,c,u,d', 'interfaces' => 'r,c,u,d', 'testimonials' => 'r,c,u,d', 'blogs' => 'r,c,u,d', 'messages' => 'r,c,u,d', 'terms' => 'r,u', 'currencies' => 'r,c,u,d', ], 'Manager' => [ 'dashboard' => 'r', 'banners' => 'r,c,u,d', 'business-categories' => 'r,c,u,d', 'plans' => 'r,c,u,d', 'subscription-reports' => 'r', 'features' => 'r,c,u,d', 'interfaces' => 'r,c,u,d', 'testimonials' => 'r,c,u,d', 'blogs' => 'r,c,u,d', 'messages' => 'r,c,u,d', 'terms' => 'r,u', ] ]; foreach ($rolesStructure as $key => $modules) { // Create a new role $role = Role::firstOrCreate([ 'name' => str($key)->remove(' ')->lower(), 'guard_name' => 'web' ]); $permissions = []; $this->command->info('Creating Role ' . strtoupper($key)); // Reading role permission modules foreach ($modules as $module => $value) { foreach (explode(',', $value) as $perm) { $permissionValue = $this->permissionMap()->get($perm); $permissions[] = Permission::firstOrCreate([ 'name' => $module . '-' . $permissionValue, 'guard_name' => 'web' ])->id; $this->command->info('Creating Permission to ' . $permissionValue . ' for ' . $module); } } // Attach all permissions to the role $role->permissions()->sync($permissions); $this->command->info("Creating '{$key}' user"); // Create default user for each role $user = User::create([ 'role' => str($key)->remove(' ')->lower(), 'name' => ucwords(str_replace('_', ' ', $key)), 'password' => bcrypt(str($key)->remove(' ')->lower()), 'email' => str($key)->remove(' ')->lower() . '@' . str($key)->remove(' ')->lower() . '.com', 'image' => 'assets/images/profile/' . str($key)->remove(' ')->lower() . '.png', ]); $user->assignRole($role); } } private function permissionMap() { return collect([ 'c' => 'create', 'r' => 'read', 'u' => 'update', 'd' => 'delete', ]); } }