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; } }
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); } }); }; }