示例#1
0
        public Task BeginLogoutAsync(Action <LogoutParameters> configureParameters = null)
        {
            return(HandleErrors(nameof(BeginLogoutAsync), async() =>
            {
                if (!SessionIsValid)
                {
                    await UpdateUserState(null, true, true);
                }
                if (UserState == null)
                {
                    return;
                }

                await InitAsync(true); //Needed for redirect callback

                var idToken = UserState.IdToken;

                var request = await LogoutClient.CreateLogoutRequest(idToken, configureParameters);
                var browserRequest = LogoutClient.CreateBrowserRequest(request);

                await UpdateUserState(null, false, true);

                if (request.Parameters.InteractionType.IsPopup())
                {
                    UserChanged?.Invoke(null);
                }
                await Helper.StartFlow(browserRequest);
            }));
        }
示例#2
0
 private void txtFile_TextChanged(object sender, EventArgs e)
 {
     try
     {
         lblMissing.Visible = txtFile.Text != "" && m_Command is CmdOpenDesktop && !System.IO.File.Exists(txtFile.Text);
         // no message given for empty text cos that looks silly, especially when it starts empty adding a command
     }
     catch
     {
         lblMissing.Visible = true;                 // error is presumably a bad path or similar
     }
     if (m_Filling)
     {
         return;
     }
     if (m_Command.m_ParamList.Any())
     {
         m_Command.m_ParamList[0] = new StringParam(txtFile.Text);
     }
     else
     {
         m_Command.m_ParamList.Add(new StringParam(txtFile.Text));
     }
     UserChanged?.Invoke(this, EventArgs.Empty);
 }
示例#3
0
        private async Task UpdateUserState(UserState userState, bool raiseEvent, bool updateStore)
        {
            UserState = userState;

            if (UserState == null)
            {
                SessionIsValid = false;
                Monitor.Stop();
                await Store.RemoveUserState();

                HttpClient.RemoveToken();
            }
            else
            {
                SessionIsValid = true;
                await Monitor.Start(UserState);

                await Store.SetUserState(userState);

                HttpClient.SetToken(UserState.AccessToken);
            }

            if (raiseEvent)
            {
                UserChanged?.Invoke(userState?.User);
            }
        }
示例#4
0
        private async Task UpdateUserState(UserState userState, bool raiseEvent, bool updateStore)
        {
            UserState = userState;

            if (UserState == null)
            {
                SessionIsValid = false;
                if (Settings.MonitorSession)
                {
                    Monitor.Stop();
                }
                if (updateStore)
                {
                    await Helper.ClearUserState();
                }
            }
            else
            {
                SessionIsValid = true;
                if (Settings.MonitorSession)
                {
                    await Monitor.Start(UserState);
                }
                if (updateStore)
                {
                    await Helper.SetUserState(userState);
                }
            }

            if (raiseEvent)
            {
                UserChanged?.Invoke(userState?.User);
            }
        }
示例#5
0
        public Task BeginLogoutAsync(Action <LogoutParameters> configureParameters = null)
        {
            return(HandleErrors(nameof(BeginLogoutAsync), async() =>
            {
                if (!SessionIsValid)
                {
                    await UpdateUserState(null, true, true);
                }
                if (UserState == null)
                {
                    return;
                }

                await InitAsync(true); //Needed for redirect callback

                var idToken = UserState.IdToken;

                var request = await LogoutClient.CreateLogoutRequest(idToken, configureParameters);

                await UpdateUserState(null, true, true);

                if (request.Parameters.InteractionType.IsRedirect())
                {
                    UriHelper.NavigateTo(request.Url);
                }
                else
                {
                    UserChanged?.Invoke(User);
                    await Interop.OpenPopup(LogoutClient.CreatePopupRequest(request));
                }
            }));
        }
示例#6
0
 public void SetUser(AwsUser user)
 {
     Initialized = true;
     User        = user;
     UserName    = user?.Attributes.Name ?? user?.Attributes.Email;
     IsConnected = user != null;
     UserChanged?.Invoke(this, new EventArgs());
 }
示例#7
0
 private void txtFilename_TextChanged(object sender, EventArgs e)
 {
     if (m_Filling)
     {
         return;
     }
     m_Command.m_ParamList[0] = new Commands.StringParam(txtFilename.Text);             // array must contain [0] as FillUI used the create option
     UserChanged?.Invoke(this, EventArgs.Empty);
 }
示例#8
0
 private void OnUserChanged(string imageUrl, string userName, string userStatus)
 {
     UserChanged?.Invoke(new UserChangedEventArgs()
     {
         ImageUrl   = imageUrl,
         UserName   = userName,
         UserStatus = userStatus,
     });
 }
示例#9
0
 private void txtApplication_TextChanged(object sender, EventArgs e)
 {
     if (m_Filling)
     {
         return;
     }
     m_Command.m_ParamList[0] = new StringParam(txtApplication.Text);
     UserChanged?.Invoke(this, EventArgs.Empty);
 }
示例#10
0
 private void nudPage_ValueChanged(object sender, EventArgs e)
 {
     if (m_Filling)
     {
         return;
     }
     m_Command.m_ParamList[0] = new IntegerParam((int)(nudPage.Value));
     UserChanged?.Invoke(sender, e);
 }
示例#11
0
 private void OnUserChanged(OnUserChangeEventArgs e)
 {
     if (e.User != null)
     {
         if (UserChanged != null)
         {
             UserChanged.Invoke(this, e);
         }
     }
 }
示例#12
0
 private void nudTime_ValueChanged(object sender, EventArgs e)
 {
     if (m_Filling)
     {
         return;
     }
     m_Command.m_ParamList.Clear();
     m_Command.m_ParamList.Add(new FloatParam((float)nudTime.Value));
     UserChanged?.Invoke(this, EventArgs.Empty);
 }
        public async Task Signout()
        {
            User        = null;
            Preferences = await Storage.Load <Preferences>("__default__");

            var apply = new ApplySession(SettingsManager, Preferences !);
            await apply.Run();

            UserChanged?.Invoke(this, new EventArgs());
        }
示例#14
0
 private void txtID_TextChanged(object sender, EventArgs e)
 {
     if (m_Filling)
     {
         return;
     }
     m_Command.m_ParamList.Clear();
     m_Command.m_ParamList.Add(new IntegerParam(txtID.Value));
     UserChanged?.Invoke(this, EventArgs.Empty);
 }
示例#15
0
 private void txtDuration_TextChanged(object sender, EventArgs e)
 {
     if (m_Filling || !txtDuration.IsValidAndNotEmpty)
     {
         return;
     }
     m_Command.Millisecond = txtDuration.Value;
     m_Command.UpdateParams();
     UserChanged?.Invoke(this, EventArgs.Empty);
 }
示例#16
0
 private void cmbPopups_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (m_Filling)
     {
         return;
     }
     m_Command.m_ParamList.Clear();
     m_Command.m_ParamList.Add(new IntegerParam((int)cmbPopups.SelectedValue));
     UserChanged?.Invoke(this, EventArgs.Empty);
 }
示例#17
0
 private void OnUserChanged(OnUserChangeEventArgs e)
 {
     if (e.User != null)
     {
         Global.Users = AppService.GetAllUsers(Global.Sites);
         InitUser();
         if (UserChanged != null)
         {
             UserChanged.Invoke(this, e);
         }
     }
 }
示例#18
0
 private void rdoThis_CheckedChanged(object sender, EventArgs e)
 {         // they are not in same container, so we need to manually implement the exclusivity
     if (rdoThis.Checked && rdoOther.Checked)
     {
         rdoOther.Checked = false;
     }
     if (!m_Filling && rdoThis.Checked)
     {
         m_Command.AffectsThis = true;
         UserChanged?.Invoke(this, EventArgs.Empty);
     }
 }
示例#19
0
 private void txtY_TextChanged(object sender, EventArgs e)
 {
     if (m_Filling)
     {
         return;
     }
     if (txtY.IsValid)
     {
         m_Command.m_ParamList[2] = new IntegerParam(txtY.Value);
         UserChanged?.Invoke(this, EventArgs.Empty);
     }
 }
示例#20
0
 private void rdoDown_CheckedChanged(object sender, EventArgs e)
 {
     if (m_Filling)
     {
         return;
     }
     if (!rdoDown.Checked)
     {
         return;
     }
     m_Command.Direction = CmdWordListScroll.Directions.Down;
     UserChanged?.Invoke(sender, e);
 }
示例#21
0
 private void txtColumns_TextChanged(object sender, EventArgs e)
 {
     if (m_Filling)
     {
         return;
     }
     if (!txtColumns.IsValid || txtColumns.Value <= 0)
     {
         return;
     }
     m_Command.m_ParamList[0] = new IntegerParam(txtColumns.Value);
     UserChanged?.Invoke(this, EventArgs.Empty);
 }
示例#22
0
        private void ChangedID()
        {         // called when any of the controls which can specify the ID has changed value
            string id = rdoAll.Checked ? CmdYocto.ALLID : cmbRelayID.Text;

            lblRelayNotFound.Visible = rdoSingle.Checked && !CmdYocto.FindRelay(id).Any();
            if (m_Filling)
            {
                return;
            }
            m_Command.RelayID = id;
            m_Command.UpdateParams();
            UserChanged?.Invoke(this, EventArgs.Empty);
        }
示例#23
0
 private void txtID_TextChanged(object sender, EventArgs e)
 {
     if (m_Filling)
     {
         return;
     }
     m_Command.AffectsThis = (txtID.Text == "");
     if (!m_Command.AffectsThis)
     {
         m_Command.ItemID = txtID.Value;
     }
     UserChanged?.Invoke(this, EventArgs.Empty);
 }
示例#24
0
 private void cmbPopups_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (m_Filling)
     {
         return;
     }
     m_Command.m_ParamList.Clear();             // we need to leave it empty for "this" and fill in the param otherwise
     if ((int)cmbPopups.SelectedValue >= 0)
     {
         m_Command.m_ParamList.Add(new IntegerParam((int)cmbPopups.SelectedValue));
     }
     UserChanged?.Invoke(this, EventArgs.Empty);
 }
示例#25
0
 private void txtY_TextChanged(object sender, EventArgs e)
 {
     btnTest.Enabled = GetValidationError() == null;
     if (m_Filling)
     {
         return;
     }
     if (txtY.IsValid)
     {
         m_Command.m_ParamList[1] = new IntegerParam(txtY.Value);
         UserChanged?.Invoke(this, EventArgs.Empty);
     }
 }
示例#26
0
 private void txtDelay_TextChanged(object sender, EventArgs e)
 {         // will only fire if CmdSlowKeys
     if (m_Filling)
     {
         return;
     }
     if (!txtDelay.IsValid || txtDelay.Value < 0 || txtDelay.Value > CmdSlowKeys.MAXDELAY)
     {
         return;
     }
     m_Command.m_ParamList[0] = new IntegerParam(txtDelay.Value);
     UserChanged?.Invoke(this, EventArgs.Empty);
 }
示例#27
0
        private async Task SetAuthorizationAsync(string bearerToken, bool isPersistent, bool isStore = true)
        {
            BearerToken       = bearerToken;
            Api.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);

            if (isStore)
            {
                await TokenStorage.SetAsync(bearerToken, isPersistent);
            }

            UserProperties.ClearOnUserChanged();
            UserChanged?.Invoke();
        }
示例#28
0
 private void rdoOff_CheckedChanged(object sender, EventArgs e)
 {
     if (m_Filling)
     {
         return;
     }
     if (!rdoOff.Checked)
     {
         return;
     }
     m_Command.m_ParamList[0] = new BoolParam(true);
     UserChanged?.Invoke(this, EventArgs.Empty);
 }
示例#29
0
        private async Task ClearAuthorizationAsync()
        {
            if (BearerToken != null)
            {
                BearerToken       = null;
                UserId            = null;
                UserName          = null;
                Api.Authorization = null;
                await TokenStorage.ClearAsync();

                UserChanged?.Invoke();
                UserInfoChanged?.Invoke();
            }
        }
示例#30
0
        private void txtDelay_TextChanged(object sender, EventArgs e)
        {
            if (m_Filling)
            {
                return;
            }
            int value;

            if (!int.TryParse(txtDelay.Text, out value) || value < 0 || value > CmdSlowKeys.MAXDELAY)
            {
                return;
            }
            m_Command.m_ParamList[0] = new IntegerParam(value);
            UserChanged?.Invoke(sender, EventArgs.Empty);
        }