public ClientDetailResource(ClientDetail client, IUrlHelper url, ClientMetaData idmAdminMeta) { if (client == null) { throw new ArgumentNullException("client"); } if (url == null) { throw new ArgumentNullException("url"); } if (idmAdminMeta == null) { throw new ArgumentNullException("idmAdminMeta"); } Data = new ClientDetailDataResource(client, url, idmAdminMeta); var links = new Dictionary <string, string>(); if (idmAdminMeta.SupportsDelete) { links["Delete"] = url.RelativeLink(Constants.RouteNames.DeleteClient, new { subject = client.Subject }); } Links = links; }
private void ValidateUpdateProperty(ClientMetaData clientMetaData, string type, string value) { if (clientMetaData == null) { throw new ArgumentNullException("clientMetaData"); } if (String.IsNullOrWhiteSpace(type)) { ModelState.AddModelError("", Messages.PropertyTypeRequired); return; } var prop = clientMetaData.UpdateProperties.SingleOrDefault(x => x.Type == type); if (prop == null) { ModelState.AddModelError("", String.Format(Messages.PropertyInvalid, type)); } else { var error = prop.Validate(value); if (error != null) { ModelState.AddModelError("", error); } } }
public void CountryIdTest() { ClientMetaData target = new ClientMetaData(); // TODO: Initialize to an appropriate value var t = typeof(ClientMetaData); var pi = t.GetProperty("CountryId"); var hasRequired = Attribute.IsDefined(pi, typeof(System.ComponentModel.DataAnnotations.RequiredAttribute)); Assert.IsTrue(hasRequired); }
public void RegisterClient(ClientMetaData meta) { Clients.Add(meta); if (ClientRegistered != null) { ClientRegistered(this, meta); } }
private IEnumerable <string> ValidateCreateProperties(ClientMetaData clientMetaData, IEnumerable <PropertyValue> properties) { if (clientMetaData == null) { throw new ArgumentNullException("clientMetaData"); } properties = properties ?? Enumerable.Empty <PropertyValue>(); var meta = clientMetaData.CreateProperties; return(meta.Validate(properties)); }
public void AddressTest() { ClientMetaData target = new ClientMetaData(); // TODO: Initialize to an appropriate value var t = typeof(ClientMetaData); var pi = t.GetProperty("Address"); var hasRequired = Attribute.IsDefined(pi, typeof(System.ComponentModel.DataAnnotations.RequiredAttribute)); Assert.IsTrue(hasRequired); var attr = (System.ComponentModel.DataAnnotations.RequiredAttribute[])pi.GetCustomAttributes(typeof(System.ComponentModel.DataAnnotations.RequiredAttribute), false); Assert.IsTrue(attr.Length > 0); Assert.IsTrue(attr[0].AllowEmptyStrings == false); }
internal void Validate() { if (ClientMetaData == null) { throw new InvalidOperationException("ClientMetaData not assigned."); } ClientMetaData.Validate(); if (ScopeMetaData == null) { throw new InvalidOperationException("ScopeMetaData not assigned."); } ScopeMetaData.Validate(); }
private IdentityAdminMetadata GetMetadata() { if (_metadata == null) { var updateClient = new List <PropertyMetadata>(); updateClient.AddRange(PropertyMetadata.FromType <InMemoryClient>()); var createClient = new List <PropertyMetadata> { PropertyMetadata.FromProperty <InMemoryClient>(x => x.ClientName, "ClientName", required: true), PropertyMetadata.FromProperty <InMemoryClient>(x => x.ClientId, "ClientId", required: true), }; var client = new ClientMetaData { SupportsCreate = true, SupportsDelete = true, CreateProperties = createClient, UpdateProperties = updateClient }; var updateScope = new List <PropertyMetadata>(); updateScope.AddRange(PropertyMetadata.FromType <InMemoryScope>()); var createScope = new List <PropertyMetadata> { PropertyMetadata.FromProperty <InMemoryScope>(x => x.Name, "ScopeName", required: true), }; var scope = new ScopeMetaData { SupportsCreate = true, SupportsDelete = true, CreateProperties = createScope, UpdateProperties = updateScope }; _metadata = new IdentityAdminMetadata { ClientMetaData = client, ScopeMetaData = scope }; } return(_metadata); }
async Task <ClientMetaData> GetCoreMetaDataAsync() { if (_clientMetadata == null) { _clientMetadata = await _clientService.GetMetadataAsync(); if (_clientMetadata == null) { throw new InvalidOperationException("coreMetaData returned null"); } _clientMetadata.Validate(); return(_clientMetadata); } return(_clientMetadata); }
internal void Validate() { if (ClientMetaData == null) { throw new InvalidOperationException("ClientMetaData not assigned."); } ClientMetaData.Validate(); if (IdentityResourceMetaData == null) { throw new InvalidOperationException("IdentityResourceMetaData not assigned."); } IdentityResourceMetaData.Validate(); if (ApiResourceMetaData == null) { throw new InvalidOperationException("ApiResourceMetaData not assigned."); } ApiResourceMetaData.Validate(); }
public IEnumerable <ClientMetaData> Register(ClientMetaData msg) { var callback = OperationContext.Current.GetCallbackChannel <IOTCallback>(); Clients.Add(msg.Id, new SynchronizingConnection(callback, msg.Name)); var others = Clients.Where(c => c.Key != msg.Id).ToList(); others.ForEach(c => c.Value.Client.RegisterClient(msg)); if (RegistrationCompleted != null) { RegistrationCompleted(this, null); } return(others.Select(c => new ClientMetaData() { Id = c.Key, Name = c.Value.Name })); }
private ClientMetaData GetMetadata() { if (_metadata == null) { var updateClient = new List <PropertyMetadata>(); updateClient.AddRange(PropertyMetadata.FromType <IdentityServer4.EntityFramework.Entities.Client>()); var createClient = new List <PropertyMetadata> { PropertyMetadata.FromProperty <IdentityServer4.EntityFramework.Entities.Client>(x => x.ClientName, "ClientName", required: true), PropertyMetadata.FromProperty <IdentityServer4.EntityFramework.Entities.Client>(x => x.ClientId, "ClientId", required: true), }; _metadata = new ClientMetaData { SupportsCreate = true, SupportsDelete = true, CreateProperties = createClient, UpdateProperties = updateClient }; } return(_metadata); }
internal void Register(ClientMetaData meta) { Application.Current.Dispatcher.BeginInvoke(new Action(() => Clients.Add(meta))); }
public CreateClientLink(UrlHelper url, ClientMetaData clientMetaData) { this["href"] = url.Link(Constants.RouteNames.CreateClient, null); this["meta"] = clientMetaData.CreateProperties; }
public ClientQueryResultResourceData(QueryResult <ClientSummary> result, UrlHelper url, ClientMetaData meta) { if (result == null) { throw new ArgumentNullException("result"); } if (url == null) { throw new ArgumentNullException("url"); } if (meta == null) { throw new ArgumentNullException("meta"); } AutoMapper.Mapper.Map(result, this); foreach (var client in this.Items) { var links = new Dictionary <string, string> { { "detail", url.Link(Constants.RouteNames.GetClient, new { subject = client.Data.Subject }) } }; if (meta.SupportsDelete) { links.Add("delete", url.Link(Constants.RouteNames.DeleteClient, new { subject = client.Data.Subject })); } client.Links = links; } }
void callback_ClientRegistered(object sender, ClientMetaData meta) { editor.Dispatcher.BeginInvoke(new Action(() => editor.RegisterClient(meta.Id, meta.Name))); ClientsList.Dispatcher.BeginInvoke(new Action(() => InvalidateProperty(ListView.ItemsSourceProperty))); viewModel.Register(meta); }
public ClientDetailDataResource(ClientDetail client, IUrlHelper url, ClientMetaData idmAdminMeta) { if (client == null) { throw new ArgumentNullException("client"); } if (url == null) { throw new ArgumentNullException("url"); } if (idmAdminMeta == null) { throw new ArgumentNullException("idmAdminMeta"); } this["ClientName"] = client.ClientName; this["ClientId"] = client.ClientId; this["Subject"] = client.Subject; if (client.Properties != null) { var props = from p in client.Properties let m = (from m in idmAdminMeta.UpdateProperties where m.Type == p.Type select m).SingleOrDefault () where m != null select new { Data = m.Convert(p.Value), Meta = m, Links = new { update = url.RelativeLink(Constants.RouteNames.UpdateClientProperty, new { subject = client.Subject, type = p.Type.ToBase64UrlEncoded() } ) } }; if (props.Any()) { this["Properties"] = props.ToArray(); } } #region Claims if (client.Claims != null) { var claims = from c in client.Claims.ToArray() select new { Data = c, Links = new { delete = url.RelativeLink(Constants.RouteNames.RemoveClientClaim, new { subject = client.Subject, id = c.Id }) } }; this["Claims"] = new { Data = claims.ToArray(), Links = new { create = url.RelativeLink(Constants.RouteNames.AddClientClaim, new { subject = client.Subject }) } }; } #endregion #region ClientSecrets if (client.ClientSecrets != null) { var clientSecrets = from c in client.ClientSecrets.ToArray() select new { Data = c, Links = new { delete = url.RelativeLink(Constants.RouteNames.RemoveClientSecret, new { subject = client.Subject, id = c.Id }) } }; this["ClientSecrets"] = new { Data = clientSecrets.ToArray(), Links = new { create = url.RelativeLink(Constants.RouteNames.AddClientSecret, new { subject = client.Subject }) } }; } #endregion #region IdentityProviderRestrictions if (client.IdentityProviderRestrictions != null) { var clientIdentityProviderRestrictions = from c in client.IdentityProviderRestrictions.ToArray() select new { Data = c, Links = new { delete = url.RelativeLink(Constants.RouteNames.RemoveClientIdPRestriction, new { subject = client.Subject, id = c.Id }) } }; this["IdentityProviderRestrictions"] = new { Data = clientIdentityProviderRestrictions.ToArray(), Links = new { create = url.RelativeLink(Constants.RouteNames.AddClientIdPRestriction, new { subject = client.Subject }) } }; } #endregion #region PostLogoutRedirectUris if (client.PostLogoutRedirectUris != null) { var postLogoutRedirectUris = from c in client.PostLogoutRedirectUris.ToArray() select new { Data = c, Links = new { delete = url.RelativeLink(Constants.RouteNames.RemoveClientPostLogoutRedirectUri, new { subject = client.Subject, id = c.Id }) } }; this["PostLogoutRedirectUris"] = new { Data = postLogoutRedirectUris.ToArray(), Links = new { create = url.RelativeLink(Constants.RouteNames.AddClientPostLogoutRedirectUri, new { subject = client.Subject }) } }; } #endregion #region RedirectUris if (client.RedirectUris != null) { var redirectUris = from c in client.RedirectUris.ToArray() select new { Data = c, Links = new { delete = url.RelativeLink(Constants.RouteNames.RemoveClientRedirectUri, new { subject = client.Subject, id = c.Id }) } }; this["RedirectUris"] = new { Data = redirectUris.ToArray(), Links = new { create = url.RelativeLink(Constants.RouteNames.AddClientRedirectUri, new { subject = client.Subject }) } }; } #endregion #region AllowedCorsOrigins if (client.AllowedCorsOrigins != null) { var alowedCorsOrigins = from c in client.AllowedCorsOrigins.ToArray() select new { Data = c, Links = new { delete = url.RelativeLink(Constants.RouteNames.RemoveClientCorsOrigin, new { subject = client.Subject, id = c.Id }) } }; this["AllowedCorsOrigins"] = new { Data = alowedCorsOrigins.ToArray(), Links = new { create = url.RelativeLink(Constants.RouteNames.AddClientCorsOrigin, new { subject = client.Subject }) } }; } #endregion #region AllowedCustomGrantTypes if (client.AllowedCustomGrantTypes != null) { var allowedCustomGrantTypes = from c in client.AllowedCustomGrantTypes.ToArray() select new { Data = c, Links = new { delete = url.RelativeLink(Constants.RouteNames.RemoveClientCustomGrantType, new { subject = client.Subject, id = c.Id }) } }; this["AllowedCustomGrantTypes"] = new { Data = allowedCustomGrantTypes.ToArray(), Links = new { create = url.RelativeLink(Constants.RouteNames.AddClientCustomGrantType, new { subject = client.Subject }) } }; } #endregion #region AllowedScopes if (client.AllowedScopes != null) { var allowedScopes = from c in client.AllowedScopes.ToArray() select new { Data = c, Links = new { delete = url.RelativeLink(Constants.RouteNames.RemoveClientScope, new { subject = client.Subject, id = c.Id }) } }; this["AllowedScopes"] = new { Data = allowedScopes.ToArray(), Links = new { create = url.RelativeLink(Constants.RouteNames.AddClientScope, new { subject = client.Subject }) } }; } #endregion }
public ClientQueryResultResource(QueryResult <ClientSummary> result, IUrlHelper url, ClientMetaData meta) { if (result == null) { throw new ArgumentNullException("result"); } if (url == null) { throw new ArgumentNullException("url"); } if (meta == null) { throw new ArgumentNullException("meta"); } Data = new ClientQueryResultResourceData(result, url, meta); var links = new Dictionary <string, object>(); if (meta.SupportsCreate) { links["create"] = new CreateClientLink(url, meta); } ; Links = links; }
internal void SetupGetMetadataAsync(ClientMetaData data) { Setup(x => x.GetMetadataAsync()) .Returns(Task.FromResult(data)); }