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);
 }
Example #2
0
        public async Task EnsureAuthenticatedAsync()
        {
            if (CurrentToken != null && !CurrentToken.IsExpired())
            {
                return;
            }
            CurrentToken = await Credentials.DoAuthAsync().ConfigureAwait(false);

            Api.TokenType   = CurrentToken.TokenType;
            Api.AccessToken = CurrentToken.AccessToken;
        }