Issue #1: Implement authentication