Preheat the oven to 200°C (400°F), or prepare a toaster or grill pan. Arrange the bread slices on a baking tray and brush lightly with olive oil. Toast for 5–8 minutes, turning if necessary, until golden and crisp around the edges. Set aside.
Place the drained and rinsed beans in a bowl. Mash roughly half of them with a fork, leaving the rest whole for texture. Add a tablespoon of olive oil, the lemon juice, a pinch of salt, and black pepper. Mix gently until creamy. Add a little warm water or vegetable broth if the mixture feels too thick.
Heat the remaining olive oil in a large skillet over medium-low heat. Add the optional shallot and cook for 2–3 minutes until softened. Stir in the garlic and optional red pepper flakes, cooking for about 30 seconds until fragrant. Avoid browning the garlic, as it can become bitter.
Add the chopped greens to the skillet in batches if necessary. Toss with the garlic oil until wilted and tender. Spinach usually takes 2–3 minutes, while kale or Swiss chard may need 4–7 minutes. Add a splash of vegetable broth or water if the pan becomes dry. Season with salt and pepper.
Add the prepared beans to the skillet and stir gently to combine. Warm for 2–3 minutes until everything is heated through. Taste and adjust the seasoning with extra lemon juice, black pepper, or salt as needed. Stir in the fresh parsley and optional lemon zest.
Spread a generous layer of the warm bean mixture over each slice of toasted bread. Spoon the garlicky greens on top and finish with grated Parmesan, if desired. Add a drizzle of extra-virgin olive oil and a little freshly ground black pepper before serving.