Users should be able to browse available spaces as guests, but in order to reserve a space, they must create an account. Implement authentication for guest, user, admin, and space manager roles. Admin and space manager accounts will have additional permissions to manage spaces and reservations.
Tasks:
- Implement user authentication (login, registration)
- Allow browsing of spaces without an account
- Require account for space reservation
- Create roles for admin and space manager with distinct permissions
- Set up basic access control for different user roles