refactor(DirectorySearchQuery): Root-Datensatz definieren.
- SearchRoot-Eigenschaft hinzufügen - Zuordnungsprofil zwischen DirectorySearchQuery.Root und DirectoryEntry hinzufügen - Logik hinzufügen, um den Standardwert SearcdhRoot zu verwenden, wenn DirectorySearchQuery.Root null ist
This commit is contained in:
parent
d0de978c7d
commit
f73730ba65
@ -9,6 +9,10 @@ namespace DigitalData.ActiveDirectory;
|
|||||||
public record DirectorySearchQuery(string? Filter = null, SearchScope Scope = SearchScope.Subtree, int SizeLimit = 5000, params string[] Property)
|
public record DirectorySearchQuery(string? Filter = null, SearchScope Scope = SearchScope.Subtree, int SizeLimit = 5000, params string[] Property)
|
||||||
: IRequest<IEnumerable<ResultPropertyCollection>>
|
: IRequest<IEnumerable<ResultPropertyCollection>>
|
||||||
{
|
{
|
||||||
|
public record Root(string Path, string? Username = null, string? Password = null);
|
||||||
|
|
||||||
|
public Root? SearchRoot { get; set; }
|
||||||
|
|
||||||
public Action<DirectorySearcher>? AfterInit { get; set; }
|
public Action<DirectorySearcher>? AfterInit { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25,13 +29,6 @@ public class DirectorySearchQueryHandler : IRequestHandler<DirectorySearchQuery,
|
|||||||
_mapper = mapper;
|
_mapper = mapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DirectoryEntry DirectoryEntry => new ()
|
|
||||||
{
|
|
||||||
Path = _options.Value.Path,
|
|
||||||
Username = _options.Value.Username,
|
|
||||||
Password = _options.Value.Password
|
|
||||||
};
|
|
||||||
|
|
||||||
//TODO: add resolver to handle SearchRoot and AfterInit mapping
|
//TODO: add resolver to handle SearchRoot and AfterInit mapping
|
||||||
public Task<IEnumerable<ResultPropertyCollection>> Handle(DirectorySearchQuery request, CancellationToken cancellationToken = default)
|
public Task<IEnumerable<ResultPropertyCollection>> Handle(DirectorySearchQuery request, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
@ -39,7 +36,12 @@ public class DirectorySearchQueryHandler : IRequestHandler<DirectorySearchQuery,
|
|||||||
{
|
{
|
||||||
using var searcher = _mapper.Map<DirectorySearcher>(request);
|
using var searcher = _mapper.Map<DirectorySearcher>(request);
|
||||||
|
|
||||||
searcher.SearchRoot = DirectoryEntry;
|
searcher.SearchRoot ??= new()
|
||||||
|
{
|
||||||
|
Path = _options.Value.Path,
|
||||||
|
Username = _options.Value.Username,
|
||||||
|
Password = _options.Value.Password
|
||||||
|
};
|
||||||
|
|
||||||
request.AfterInit?.Invoke(searcher);
|
request.AfterInit?.Invoke(searcher);
|
||||||
|
|
||||||
|
|||||||
@ -9,5 +9,6 @@ public class MappingProfile : Profile
|
|||||||
public MappingProfile()
|
public MappingProfile()
|
||||||
{
|
{
|
||||||
CreateMap<DirectorySearchQuery, DirectorySearcher>();
|
CreateMap<DirectorySearchQuery, DirectorySearcher>();
|
||||||
|
CreateMap<DirectorySearchQuery.Root, DirectoryEntry>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user