def login(self, request): """ Verify credentials """ try: user = authenticate(request) if not user: raise AuthenticationFailed("User not authenticated.") if not user.is_active: raise AuthenticationFailed("This user has been disabled.") login(request, user) return Response(UserSerializer(user).data) except NoEmailException as ex: # The user's clientId didn't have an email logger.warning("Email required for login.", exc_info=ex) raise AuthenticationFailed(str(ex)) except AuthError as ex: # This indicates an error that may require attention by the # Treeherder or Taskcluster teams. Logging this to New Relic to # increase visibility. newrelic.agent.record_exception() logger.exception("Error", exc_info=ex) raise AuthenticationFailed(str(ex))
def login(self, request): """ Verify credentials with Taskcluster """ auth_header = request.META.get("HTTP_TCAUTH", None) host = request.get_host().split(":")[0] port = request.get_port() try: user = authenticate(auth_header=auth_header, host=host, port=int(port)) if not user: raise AuthenticationFailed("User not authenticated.") if not user.is_active: raise AuthenticationFailed("This user has been disabled.") login(request, user) return Response(UserSerializer(user).data) except TaskclusterAuthenticationFailed as ex: # This is an error where the user wasn't able to log in # for some reason. logger.warning("Error authenticating with Taskcluster", exc_info=ex) raise AuthenticationFailed(ex.message) except (TaskclusterConnectionError, TaskclusterRestFailure) as ex: # This indicates an error that may require attention by the # Treeherder or Taskcluster teams. Logging this to New Relic to # increase visibility. newrelic.agent.record_exception() logger.exception("Error communicating with Taskcluster", exc_info=ex) raise AuthenticationFailed(ex.message)