Implement a user authentication system with secure login and registration functionality. Users should be able to sign up for an account, log in securely, and access protected routes only after successful authentication. Optional: Use standard mechanisms to handle password hashing, session management, and user role- based access control.