backend logic

- [x] submit hack (one user could only submit one hack for the same topic and language)
- [x] authorization checking (only logged-on users can submit hacks)