'User', 'title' => 'Пользователь'], ['name' => 'Editor', 'title' => 'Редактор'], ['name' => 'Administrator', 'title' => 'Администратор'] ]; /** * @var array|\Illuminate\Support\Collection */ public $permissions = [ 'users' => [ ['name' => 'List users'], ['name' => 'Create users'], ['name' => 'Delete users'], ['name' => 'Update users'], ], 'roles' => [ ['name' => 'List roles'], ['name' => 'Create roles'], ['name' => 'Delete roles'], ['name' => 'Update roles'], ], 'permissions' => [ ['name' => 'List permissions'], ], 'companies' => [ ['name' => 'List companies'], ['name' => 'Create companies'], ['name' => 'Delete companies'], ['name' => 'Update companies'], ] ]; /** * Run the database seeders. * * @return void */ public function run() { $this->createRoles()->createPermissions()->assignAllPermissionsToAdminRole(); } /** * @return $this */ public function createRoles() { $this->roles = collect($this->roles)->map(function ($role) { return Role::firstOrCreate($role); }); return $this; } /** * @return $this */ public function createPermissions() { $this->permissions = collect($this->permissions)->map(function ($group) { return collect($group)->map(function ($permission) { return Permission::firstOrCreate($permission); }); }); return $this; } /** * @return $this */ public function assignAllPermissionsToAdminRole() { $role = Role::where('name', 'Administrator')->firstOrFail(); $this->permissions->flatten()->each(function ($permission) use ($role) { $role->givePermissionTo($permission); }); return $this; } }