Authentication

Three scenarios:

Scenario 1: No authentication
Scenario 2: Authentication for admin section only, login through admin
Scenario 3: Authentication for admin/frontend sections, login through frontend
Scenario 4: Authentication via token

- [ ] Bundle devise
- [ ] Support scenario 1
- [ ] Support scenario 2
- [ ] Support scenario 3
- [ ] Support scenario 4
- [ ] Return 404 if not authenticated
Redundant `self` detected.