First Visualizer-side roles middleware.

Pretty straightforward. The `hasRoles()` function actually generates a middleware instead of being one itself.