Clean up votes

- Fix broken uniqueness validation

- Refactor logic

- Ensure only signed in users can view the vote buttons
Added integration test for voting