internal ElevateToken Elevate(String message) { if (CurrentToken == null || CurrentToken.IsExpired()) { Logger.Debug("We don't have an elevation token or it has expired, requesting from server."); ElevateTokenRq erq = new ElevateTokenRq(); try { String password = UIManager.RequestElevation(message); // Make sure password isn't empty and conforms to the current password. if (!String.IsNullOrWhiteSpace(password) && Util.getSingleton().hashPassword(password).Equals(Reg.PasswordHash)) { ElevateTokenRs ers = ConnectionManager.Connection.Request <ElevateTokenRq, ElevateTokenRs>(erq); CurrentToken = new ElevateToken(ers.tokenId, ers.token, password, ers.expires); } else { Logger.Error("Entered password for elevation is invalid."); CurrentToken = null; throw new ElevationException(); } } finally { UIManager.CompleteElevation(); } } else { Logger.Debug("Reusing elevate token " + CurrentToken.TokenId); } return(CurrentToken); }
public async Task EnsureAuthenticatedAsync() { if (CurrentToken != null && !CurrentToken.IsExpired()) { return; } CurrentToken = await Credentials.DoAuthAsync().ConfigureAwait(false); Api.TokenType = CurrentToken.TokenType; Api.AccessToken = CurrentToken.AccessToken; }