entity = $entity; } /** * Get the roles with permissions assigned. */ public function rolesWithPermissions(): array { return $this->entity->permissions() ->with('role') ->where('role_id', '!=', 0) ->get(['id', 'role_id']) ->pluck('role') ->sortBy('display_name') ->all(); } /** * Get the roles that don't yet have specific permissions for the * entity we're managing permissions for. */ public function rolesNotAssigned(): array { $assigned = $this->entity->permissions()->pluck('role_id'); return Role::query() ->where('system_name', '!=', 'admin') ->whereNotIn('id', $assigned) ->orderBy('display_name', 'asc') ->get() ->all(); } /** * Get the "Everyone Else" role entry. */ public function everyoneElseRole(): Role { return (new Role())->forceFill([ 'id' => 0, 'display_name' => 'Everyone Else', 'description' => 'Set permissions for all roles not specifically overridden.' ]); } }