Can't you make loggedInUser global or at least โlocally globalโ at the same scale as your navigator.id.watch method, like an MDN example?
After that, you can get a JSON response from Persona, which contains some data, including email. So you can pass this data in response to AJAX and populate the loggedInUser variable
https://developer.mozilla.org/en-US/docs/Persona/Quick_Setup#Step_3.3A_Watch_for_login_and_logout_actions
var currentUser = ' bob@example.com '; navigator.id.watch({ loggedInUser: currentUser, onlogin: function(assertion) { $.ajax({ type: 'POST', url: '/auth/login', // This is a URL on your website. data: {assertion: assertion}, success: function(res, status, xhr) { window.location.reload(); }, error: function(xhr, status, err) { navigator.id.logout(); alert("Login failure: " + err); } }); }, onlogout: function() { $.ajax({ type: 'POST', url: '/auth/logout', // This is a URL on your website. success: function(res, status, xhr) { window.location.reload(); }, error: function(xhr, status, err) { alert("Logout failure: " + err); } }); } });
Sample JSON response from MDN:
{ "status": "okay", "email": " bob@eyedee.me ", "audience": "https://example.com:443", "expires": 1308859352261, "issuer": "eyedee.me" }
source share