I've been using Nancy for a while now and I think I've worked myself into a box and cannot think outside of it enough to see my mistakes in my use of Nancy. The option I do see I don't like very much. If there is some functionality I missed that someone can help me with, or alternative methods that I don't list well any help would be greatly appreciated.
I guess you can take 1 of 2 approaches, as you've mentioned.
I tend to use a front-end framework to manage these sorts of things, for me it's either riot.js or vue.js, but same thing would apply regardless if you were using angular/react, etc.
Basically you would make a call to an endpoint to return a json result, this would look at the user and call a factory to get a menu service based on the user information and then the menu service would be responsible for creating the model of the resulting menu. The client would then build its own view based on the response.
If you're pushing the menu down with every request you could do something similar using
RenderPartial, the approach is the same where your model contains a Menu and a MenuView based on the result of the service.
Use the factory, create/resolve the correct service, generate menu, attach the menu to the response model along with everything else, then render your partial:
I use this approach for a personal project of mine.
Let me know if you need me to explain further.