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