Many of the Brickset API calls require a user to login. This function wraps
the login
function to managing the user hash returned from
login across multiple API calls. It will also ensure that the hash is still
valid and if it expired a new hash will be requested.