void ReleaseDesignerOutlets ()
		{
			if (CbTokenAuthMethod != null) {
				CbTokenAuthMethod.Dispose ();
				CbTokenAuthMethod = null;
			}

			if (BtnAddPostLogoutRedirectUri != null) {
				BtnAddPostLogoutRedirectUri.Dispose ();
				BtnAddPostLogoutRedirectUri = null;
			}

			if (BtnAddRedirectUri != null) {
				BtnAddRedirectUri.Dispose ();
				BtnAddRedirectUri = null;
			}

			if (BtnApply != null) {
				BtnApply.Dispose ();
				BtnApply = null;
			}

			if (BtnBrowseCertificate != null) {
				BtnBrowseCertificate.Dispose ();
				BtnBrowseCertificate = null;
			}

			if (BtnRemovePostLogoutRedirectUri != null) {
				BtnRemovePostLogoutRedirectUri.Dispose ();
				BtnRemovePostLogoutRedirectUri = null;
			}

			if (BtnRemoveRedirectUri != null) {
				BtnRemoveRedirectUri.Dispose ();
				BtnRemoveRedirectUri = null;
			}

			if (PostLogoutRedirectUriTableView != null) {
				PostLogoutRedirectUriTableView.Dispose ();
				PostLogoutRedirectUriTableView = null;
			}

			if (RedirectUriTableView != null) {
				RedirectUriTableView.Dispose ();
				RedirectUriTableView = null;
			}

			if (TxtCertificateDN != null) {
				TxtCertificateDN.Dispose ();
				TxtCertificateDN = null;
			}

			if (TxtLogoutUrl != null) {
				TxtLogoutUrl.Dispose ();
				TxtLogoutUrl = null;
			}

			if (TxtName != null) {
				TxtName.Dispose ();
				TxtName = null;
			}

			if (TxtPostLogoutRedirectUri != null) {
				TxtPostLogoutRedirectUri.Dispose ();
				TxtPostLogoutRedirectUri = null;
			}

			if (TxtRedirectUri != null) {
				TxtRedirectUri.Dispose ();
				TxtRedirectUri = null;
			}
		}
Esempio n. 2
0
        public override void AwakeFromNib()
        {
            base.AwakeFromNib();
            OidcClientDto = new OidcClientDto {
                ClientId = OidcClientDtoOriginal.ClientId,
                OidcClientMetadataDTO = new OidcClientMetadataDto {
                    RedirectUris           = OidcClientDtoOriginal.OidcClientMetadataDTO.RedirectUris,
                    PostLogoutRedirectUris = OidcClientDtoOriginal.OidcClientMetadataDTO.PostLogoutRedirectUris,
                    CertSubjectDN          = OidcClientDtoOriginal.OidcClientMetadataDTO.CertSubjectDN,
                    LogoutUri = OidcClientDtoOriginal.OidcClientMetadataDTO.LogoutUri,
                    TokenEndpointAuthMethod = OidcClientDtoOriginal.OidcClientMetadataDTO.TokenEndpointAuthMethod
                }
            };

            TxtName.StringValue = OidcClientDtoOriginal.ClientId;
            var authIndex = OidcClientDtoOriginal.OidcClientMetadataDTO.TokenEndpointAuthMethod == "none" ? 0 : 1;

            CbTokenAuthMethod.SelectItem(authIndex);
            TxtLogoutUrl.StringValue = string.IsNullOrEmpty(OidcClientDtoOriginal.OidcClientMetadataDTO.LogoutUri) ? string.Empty :
                                       OidcClientDtoOriginal.OidcClientMetadataDTO.LogoutUri;
            TxtCertificateDN.StringValue = string.IsNullOrEmpty(OidcClientDtoOriginal.OidcClientMetadataDTO.CertSubjectDN) ?
                                           string.Empty : OidcClientDtoOriginal.OidcClientMetadataDTO.CertSubjectDN;
            ReloadTableView(RedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.RedirectUris);
            ReloadTableView(PostLogoutRedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris);

            BtnBrowseCertificate.Activated += (object sender, EventArgs e) => {
                var openPanel = new NSOpenPanel();
                openPanel.ReleasedWhenClosed = true;
                openPanel.Prompt             = "Select file";

                var result = openPanel.RunModal();
                if (result == 1)
                {
                    var filePath = openPanel.Url.AbsoluteString.Replace("file://", string.Empty);
                    var cert     = new X509Certificate2();
                    ActionHelper.Execute(delegate() {
                        cert.Import(filePath);
                        TxtCertificateDN.StringValue = cert.Subject;
                    });
                }
            };

            BtnAddRedirectUri.Activated += (object sender, EventArgs e) => {
                if (string.IsNullOrEmpty(TxtRedirectUri.StringValue))
                {
                    UIErrorHelper.ShowAlert("Redirect Uri cannot be empty", "Alert");
                    return;
                }
                OidcClientDto.OidcClientMetadataDTO.RedirectUris.Add(TxtRedirectUri.StringValue);
                ReloadTableView(RedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.RedirectUris);
                TxtRedirectUri.StringValue = (NSString)string.Empty;
            };

            BtnAddPostLogoutRedirectUri.Activated += (object sender, EventArgs e) => {
                if (string.IsNullOrEmpty(TxtPostLogoutRedirectUri.StringValue))
                {
                    UIErrorHelper.ShowAlert("Post logout redirect Uri cannot be empty", "Alert");
                    return;
                }
                OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris.Add(TxtPostLogoutRedirectUri.StringValue);
                ReloadTableView(PostLogoutRedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris);
                TxtPostLogoutRedirectUri.StringValue = (NSString)string.Empty;
            };

            BtnRemoveRedirectUri.Activated += (object sender, EventArgs e) => {
                if (RedirectUriTableView.SelectedRows.Count > 0)
                {
                    foreach (var row in RedirectUriTableView.SelectedRows)
                    {
                        OidcClientDto.OidcClientMetadataDTO.RedirectUris.RemoveAt((int)row);
                    }
                    ReloadTableView(RedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.RedirectUris);
                }
            };

            BtnRemovePostLogoutRedirectUri.Activated += (object sender, EventArgs e) => {
                if (PostLogoutRedirectUriTableView.SelectedRows.Count > 0)
                {
                    foreach (var row in PostLogoutRedirectUriTableView.SelectedRows)
                    {
                        OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris.RemoveAt((int)row);
                    }
                    ReloadTableView(PostLogoutRedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris);
                }
            };

            this.BtnApply.Activated += (object sender, EventArgs e) => {
                ActionHelper.Execute(delegate() {
                    if (string.IsNullOrEmpty(TxtCertificateDN.StringValue))
                    {
                        UIErrorHelper.ShowAlert("Please choose a valid certificate", "Alert");
                    }
                    else if (string.IsNullOrEmpty(TxtLogoutUrl.StringValue))
                    {
                        UIErrorHelper.ShowAlert("Please enter valid logout uri", "Alert");
                    }
                    else if (OidcClientDto.OidcClientMetadataDTO.RedirectUris.Count == 0)
                    {
                        UIErrorHelper.ShowAlert("Please enter a valid redirect URI", "Alert");
                    }
                    else if (OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris.Count == 0)
                    {
                        UIErrorHelper.ShowAlert("Please enter a valid post logout redirect URI", "Alert");
                    }
                    else
                    {
                        OidcClientDto.OidcClientMetadataDTO.LogoutUri = TxtLogoutUrl.StringValue;
                        OidcClientDto.OidcClientMetadataDTO.TokenEndpointAuthMethod = (NSString)CbTokenAuthMethod.SelectedValue;
                        OidcClientDto.OidcClientMetadataDTO.CertSubjectDN           = TxtCertificateDN.StringValue;
                        var auth      = SnapInContext.Instance.AuthTokenManager.GetAuthToken(ServerDto.ServerName);
                        OidcClientDto = SnapInContext.Instance.ServiceGateway.OidcClient.Update(ServerDto, TenantName, OidcClientDto.ClientId, OidcClientDto.OidcClientMetadataDTO, auth.Token);
                        NSNotificationCenter.DefaultCenter.PostNotificationName("RefreshTableView", this);
                    }
                });
            };
        }