0

So, in my login view, i want to check if the address returned from metamask corresponds to the wallet address of the user trying to sign in.

This is the javascript code i am using to do so:

async function loginWithMetaMask() {
  const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' })
        .catch((e) => {
          console.error(e.message);
          return;
        })
      if (!accounts) { return; }

    window.userWalletAddress = accounts[0];
    console.log(accounts[0]);

    let data = {address : window.userWalletAddress};

      const request = new XMLHttpRequest();
      request.open('POST', 'accounts/login', true);
      request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');

      request.onload = () => {
        const data = JSON.parse(request.responseText);
        console.log(data);
      }

      request.send(data);
      return false;
}

as you can see :

let data = {address : window.userWalletAddress};
    
          const request = new XMLHttpRequest();
          request.open('POST', 'accounts/login', true);
          request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    
          request.onload = () => {
            const data = JSON.parse(request.responseText);
            console.log(data);
          }
    
          request.send(data);

this code snippet from loginWithMetaMask() function is responsible for sending the JSON object when a POST request is made to the 'accounts/login' url.

This is my django view:

def post(self, request):#, address):
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)

        if request.is_ajax():
            print('connected')
            data = {'address': request.POST.get('address', None)}
            address = data[address]
            print(address)
        else:
            return render(request, self.template, {
                'message': "MetaMask not onnected"
            })
        #go ahead and authenticate the user

but request.is_ajax() returns false and i get no data in my view.

Can someone please show me the correct way to do this?

Thank You

0 Answers0