from fusionauth.fusionauth_client import FusionAuthClient

class FusionAuthBackend:
  
    def authenticate(username: str, password: str, *args, **kwargs):
        # fusionauth_client.
        client = FusionAuthClient(settings.FUSION_AUTH_API_KEY, settings.FUSION_AUTH_BASE_URL)
        _tenant_id = settings.FUSION_AUTH_MAIN_TENANT_ID
        if _tenant_id != "":
            client.set_tenant_id(settings.FUSION_AUTH_MAIN_TENANT_ID)

        login_data = {
            "loginId": username,
            "password": password,
            "applicationId": settings.FUSION_AUTH_APP_ID,
            "noJWT": True,
        }

        response = client.login(login_data)
        _status = response.status
        if 200 >= _status <= 299:
            return get_or_create_user(response.success_response["user"]["email"])
        if _status > 299 :
            return None