public async Task <IdentityResult> DeleteApiResourceClaimAsync( Neo4jIdentityServer4ApiResource apiResource, Neo4jIdentityServer4ApiResourceClaim apiResourceClaim, CancellationToken cancellationToken = default(CancellationToken)) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); apiResource.ThrowIfNull(nameof(apiResource)); apiResourceClaim.ThrowIfNull(nameof(apiResourceClaim)); try { var cypher = $@" MATCH (r:{IdSrv4ApiResource}{{Name: $p0}})-[:{Neo4jConstants.Relationships.HasClaim}]-> (c:{IdSrv4ApiResourceClaim}{{Type: $p1}}) DETACH DELETE c"; await Session.RunAsync(cypher, Params.Create( apiResource.Name, apiResourceClaim.Type)); await RaiseApiResourceChangeEventAsync(apiResource); return(IdentityResult.Success); } catch (ClientException ex) { return(ex.ToIdentityResult()); } }
public async Task <IdentityResult> AddApiResourceClaimAsync( Neo4jIdentityServer4ApiResource apiResource, Neo4jIdentityServer4ApiResourceClaim apiResourceClaim, CancellationToken cancellationToken = default(CancellationToken)) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); apiResource.ThrowIfNull(nameof(apiResource)); apiResourceClaim.ThrowIfNull(nameof(apiResourceClaim)); try { var cypher = $@" MATCH (r:{IdSrv4ApiResource}{{Name: $p0}}) MERGE (l:{IdSrv4ApiResourceClaim} {"$p1".AsMapForNoNull<Neo4jIdentityServer4ApiResourceClaim>(apiResourceClaim)}) MERGE (r)-[:{Neo4jConstants.Relationships.HasClaim}]->(l)"; var result = await Session.RunAsync(cypher, Params.Create(apiResource.Name, apiResourceClaim)); await RaiseApiResourceChangeEventAsync(apiResource); return(IdentityResult.Success); } catch (ClientException ex) { return(ex.ToIdentityResult()); } }
public async Task <Neo4jIdentityServer4ApiResourceClaim> GetApiResourceClaimAsync( Neo4jIdentityServer4ApiResource apiResource, Neo4jIdentityServer4ApiResourceClaim apiResourceClaim, CancellationToken cancellationToken = default(CancellationToken)) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); apiResource.ThrowIfNull(nameof(apiResource)); apiResourceClaim.ThrowIfNull(nameof(apiResourceClaim)); var cypher = $@" MATCH (r:{IdSrv4ApiResource}{{Name: $p0}})-[:{Neo4jConstants.Relationships.HasClaim}]-> (c:{IdSrv4ApiResourceClaim}{{Type: $p1}}) RETURN c {{ .* }}"; var result = await Session.RunAsync(cypher, Params.Create(apiResource.Name, apiResourceClaim.Type)); var record = await result.SingleOrDefaultAsync(r => r.MapTo <Neo4jIdentityServer4ApiResourceClaim>("c")); return(record); }
public async Task <IdentityResult> InsertApiResource( ApiResource model, CancellationToken cancellationToken = default(CancellationToken)) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); model.ThrowIfNull(nameof(model)); try { var dto = model.ToNeo4jEntity(); var result = await CreateApiResourceAsync(dto, cancellationToken); if (!result.Succeeded) { return(result); } foreach (var claim in model.UserClaims) { var dtoClaim = new Neo4jIdentityServer4ApiResourceClaim() { Type = claim }; result = await AddApiResourceClaimAsync(dto, dtoClaim, cancellationToken); if (!result.Succeeded) { return(result); } } foreach (var scope in model.Scopes) { var dtoScope = scope.ToNeo4jEntity(); result = await AddApiScopeAsync(dto, dtoScope, cancellationToken); if (!result.Succeeded) { return(result); } foreach (var claim in scope.UserClaims) { var dtoClaim = new Neo4jIdentityServer4ApiScopeClaim() { Type = claim }; result = await AddApiScopeClaimAsync(dto, dtoScope, dtoClaim, cancellationToken); if (!result.Succeeded) { return(result); } } } foreach (var apiSecret in model.ApiSecrets) { var dtoSecret = apiSecret.ToNeo4jApiSecretEntity(); result = await AddApiSecretAsync(dto, dtoSecret, cancellationToken); if (!result.Succeeded) { return(result); } } return(IdentityResult.Success); } catch (ClientException ex) { return(ex.ToIdentityResult()); } }