private void ValidateUpdateProperty(ApiResourceMetaData apiResourceMetaData, string type, string value) { if (apiResourceMetaData == null) { throw new ArgumentNullException(nameof(apiResourceMetaData)); } if (string.IsNullOrWhiteSpace(type)) { ModelState.AddModelError("", Messages.PropertyTypeRequired); return; } var prop = apiResourceMetaData.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); } } }
private IEnumerable <string> ValidateCreateProperties(ApiResourceMetaData apiResourceMetaData, IEnumerable <PropertyValue> properties) { if (apiResourceMetaData == null) { throw new ArgumentNullException(nameof(apiResourceMetaData)); } properties = properties ?? Enumerable.Empty <PropertyValue>(); var meta = apiResourceMetaData.CreateProperties; return(meta.Validate(properties)); }
async Task <ApiResourceMetaData> GetCoreMetaDataAsync() { if (_metadata == null) { _metadata = await _service.GetMetadataAsync(); if (_metadata == null) { throw new InvalidOperationException("IdentityResourceMetaData returned null"); } _metadata.Validate(); return(_metadata); } return(_metadata); }
private ApiResourceMetaData GetMetadata() { if (_metadata == null) { var updateApiResource = new List <PropertyMetadata>(); updateApiResource.AddRange(PropertyMetadata.FromType <IdentityServer4.EntityFramework.Entities.ApiResource>()); var createApiResource = new List <PropertyMetadata> { PropertyMetadata.FromProperty <IdentityServer4.EntityFramework.Entities.ApiResource>(x => x.Name, "ApiResourceName", required: true), }; _metadata = new ApiResourceMetaData { SupportsCreate = true, SupportsDelete = true, CreateProperties = createApiResource, UpdateProperties = updateApiResource }; } return(_metadata); }
public ApiResourceQueryResultResource(QueryResult <ApiResourceSummary> result, IUrlHelper url, ApiResourceMetaData meta) { if (result == null) { throw new ArgumentNullException(nameof(result)); } if (url == null) { throw new ArgumentNullException(nameof(url)); } if (meta == null) { throw new ArgumentNullException(nameof(meta)); } Data = new ApiResourceQueryResultResourceData(result, url, meta); var links = new Dictionary <string, object>(); if (meta.SupportsCreate) { links["create"] = new CreateApiResourceLink(url, meta); } ; Links = links; }
public ApiResourceQueryResultResourceData(QueryResult <ApiResourceSummary> result, IUrlHelper url, ApiResourceMetaData meta) { if (result == null) { throw new ArgumentNullException(nameof(result)); } if (url == null) { throw new ArgumentNullException(nameof(url)); } if (meta == null) { throw new ArgumentNullException(nameof(meta)); } Mapper.Map(result, this); foreach (var identityResource in this.Items) { var links = new Dictionary <string, string> { { "detail", url.RelativeLink(Constants.RouteNames.GetApiResource, new { subject = identityResource.Data.Subject }) } }; if (meta.SupportsDelete) { links.Add("delete", url.RelativeLink(Constants.RouteNames.DeleteApiResource, new { subject = identityResource.Data.Subject })); } identityResource.Links = links; } }
public ApiResourceDetailDataResource(ApiResourceDetail apiResource, UrlHelper url, ApiResourceMetaData metaData) { if (apiResource == null) { throw new ArgumentNullException(nameof(apiResource)); } if (url == null) { throw new ArgumentNullException(nameof(url)); } if (metaData == null) { throw new ArgumentNullException(nameof(metaData)); } this["Name"] = apiResource.Name; this["Description"] = apiResource.Description; this["Subject"] = apiResource.Subject; if (apiResource.Properties != null) { var props = (from p in apiResource.Properties let m = (from m in metaData.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.UpdateApiResourceProperty, new { subject = apiResource.Subject, type = p.Type.ToBase64UrlEncoded() } ) } }).ToList(); if (props.Any()) { this["Properties"] = props.ToArray(); } } this["Claims"] = new { Data = GetClaims(apiResource, url).ToArray(), Links = new { create = url.RelativeLink(Constants.RouteNames.AddApiResourceClaim, new { subject = apiResource.Subject }) } }; this["Secrets"] = new { Data = GetSecrets(apiResource, url).ToArray(), Links = new { create = url.RelativeLink(Constants.RouteNames.AddApiResourceSecret, new { subject = apiResource.Subject }) } }; this["Scopes"] = new { Data = GetScopes(apiResource, url).ToArray(), Links = new { create = url.RelativeLink(Constants.RouteNames.AddApiResourceScope, new { subject = apiResource.Subject }) } }; }
public ApiResourceDetailResource(ApiResourceDetail apiResource, UrlHelper url, ApiResourceMetaData metaData) { if (apiResource == null) { throw new ArgumentNullException(nameof(apiResource)); } if (url == null) { throw new ArgumentNullException(nameof(url)); } if (metaData == null) { throw new ArgumentNullException(nameof(metaData)); } Data = new ApiResourceDetailDataResource(apiResource, url, metaData); var links = new Dictionary <string, string>(); if (metaData.SupportsDelete) { links["Delete"] = url.RelativeLink(Constants.RouteNames.DeleteApiResource, new { subject = apiResource.Subject }); } Links = links; }
public CreateApiResourceLink(UrlHelper url, ApiResourceMetaData apiResourceMetaData) { this["href"] = url.RelativeLink(Constants.RouteNames.CreateApiResource); this["meta"] = apiResourceMetaData.CreateProperties; }