public async Task <IdentityResult> DeleteApiSecretAsync(
            Neo4jIdentityServer4ApiResource apiResource,
            Neo4jIdentityServer4ApiSecret apiSecret,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();
            ThrowIfDisposed();
            apiResource.ThrowIfNull(nameof(apiResource));
            apiSecret.ThrowIfNull(nameof(apiSecret));

            try
            {
                var cypher = $@"
                MATCH 
                    (r:{IdSrv4ApiResource}{{Name: $p0}})-[:{Neo4jConstants.Relationships.HasSecret}]->
                    (s:{IdSrv4ApiSecret}{{Type: $p1,Value: $p2}}) 
                DETACH DELETE s";

                await Session.RunAsync(cypher,
                                       Params.Create(
                                           apiResource.Name,
                                           apiSecret.Type, apiSecret.Value));
                await RaiseApiResourceChangeEventAsync(apiResource);

                return(IdentityResult.Success);
            }
            catch (ClientException ex)
            {
                return(ex.ToIdentityResult());
            }
        }
        public async Task <IdentityResult> AddApiSecretAsync(
            Neo4jIdentityServer4ApiResource apiResource,
            Neo4jIdentityServer4ApiSecret apiSecret,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();
            ThrowIfDisposed();
            apiResource.ThrowIfNull(nameof(apiResource));
            apiSecret.ThrowIfNull(nameof(apiSecret));

            try
            {
                var cypher = $@"
                MATCH 
                    (r:{IdSrv4ApiResource}{{Name: $p0}}) 
                MERGE 
                    (s:{IdSrv4ApiSecret} {"$p1".AsMapForNoNull<Neo4jIdentityServer4ApiSecret>(apiSecret)})
                MERGE 
                    (r)-[:{Neo4jConstants.Relationships.HasSecret}]->(s)";

                var result = await Session.RunAsync(cypher, Params.Create(apiResource.Name, apiSecret));
                await RaiseApiResourceChangeEventAsync(apiResource);

                return(IdentityResult.Success);
            }
            catch (ClientException ex)
            {
                return(ex.ToIdentityResult());
            }
        }
        public async Task <Neo4jIdentityServer4ApiSecret> GetApiSecretAsync(
            Neo4jIdentityServer4ApiResource apiResource,
            Neo4jIdentityServer4ApiSecret apiSecret,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();
            ThrowIfDisposed();
            apiResource.ThrowIfNull(nameof(apiResource));
            apiSecret.ThrowIfNull(nameof(apiSecret));

            var cypher = $@"
                MATCH 
                    (:{IdSrv4ApiResource}{{Name: $p0}})-[:{Neo4jConstants.Relationships.HasSecret}]->
                    (s:{IdSrv4ApiSecret}{{Type: $p1,Value: $p2}}) 
                RETURN s {{ .* }}";

            var result = await Session.RunAsync(cypher,
                                                Params.Create(apiResource.Name, apiSecret.Type, apiSecret.Value));

            var record =
                await result.SingleOrDefaultAsync(r => r.MapTo <Neo4jIdentityServer4ApiSecret>("s"));

            return(record);
        }
Esempio n. 4
0
 /// <summary>
 /// Maps an entity to a model.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <returns></returns>
 public static IdentityServer4.Models.Secret ToModel(this Neo4jIdentityServer4ApiSecret entity)
 {
     return(Mapper.Map <IdentityServer4.Models.Secret>(entity));
 }