implement user info, ensureAuthenticate