public async Task <IdentityResult> AddSecretToClientAsync(Neo4jIdentityServer4Client client, Neo4jIdentityServer4ClientSecret secret, CancellationToken cancellationToken = default(CancellationToken)) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); client.ThrowIfNull(nameof(client)); secret.ThrowIfNull(nameof(secret)); try { var cypher = $@" MATCH (c:{IdSrv4Client} {{ClientId: $p0}}) CREATE UNIQUE (c)-[:{Neo4jConstants.Relationships.HasSecret}]-> (s:{IdSrv4ClientSecret} {"$p1".AsMapForNoNull(secret)})"; var result = await Session.RunAsync(cypher, Params.Create(client.ClientId, secret)); await RaiseClientChangeEventAsync(client); return(IdentityResult.Success); } catch (ClientException ex) { return(ex.ToIdentityResult()); } }
public async Task <IdentityResult> DeleteSecretAsync( Neo4jIdentityServer4Client client, Neo4jIdentityServer4ClientSecret secret, CancellationToken cancellationToken = default(CancellationToken)) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); client.ThrowIfNull(nameof(client)); secret.ThrowIfNull(nameof(secret)); try { var cypher = $@" MATCH (c:{IdSrv4Client})-[:{Neo4jConstants.Relationships.HasSecret}]->(s:{IdSrv4ClientSecret}) WHERE c.ClientId = $p0 AND s.Value = $p1 DETACH DELETE s"; await Session.RunAsync(cypher, Params.Create( client.ClientId, secret.Value)); await RaiseClientChangeEventAsync(client); return(IdentityResult.Success); } catch (ClientException ex) { return(ex.ToIdentityResult()); } }
public async Task <Neo4jIdentityServer4ClientSecret> FindSecretAsync(Neo4jIdentityServer4Client client, Neo4jIdentityServer4ClientSecret secret, CancellationToken cancellationToken = default(CancellationToken)) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); client.ThrowIfNull(nameof(client)); secret.ThrowIfNull(nameof(secret)); var cypher = $@" MATCH (c:{IdSrv4Client})-[:{Neo4jConstants.Relationships.HasSecret}]->(s:{IdSrv4ClientSecret}) WHERE c.ClientId = $p0 AND s.Value = $p1 RETURN s{{ .* }}"; var result = await Session.RunAsync(cypher, Params.Create( client.ClientId, secret.Value)); var foundRecord = await result.SingleOrDefaultAsync(r => r.MapTo <Neo4jIdentityServer4ClientSecret>("s")); return(foundRecord); }
/// <summary> /// Maps an entity to a model. /// </summary> /// <param name="entity">The entity.</param> /// <returns></returns> public static IdentityServer4.Models.Secret ToModel( this Neo4jIdentityServer4ClientSecret entity) { return(Mapper.Map <IdentityServer4.Models.Secret>(entity)); }