Add UserAuthentication and tests