1. Fazer um monte de verificações na view não é algo necessariamente ruim, principalmente se é necessário. Vocês decidiram seguir uma abordagem bem estranha e isso se torna necessário.
2. Você pode criar uma classe helper que retorne um array com os botões que o usuário tem acesso e, a partir daí, criar os botões na view.
3. Ainda não entendi o que isso tem a ver com o controller, mas ok.