public static ICommandRegistry RegisterCommands( ICommandRegistry registry, UserRepository repository, Func <string> tokenSource, Func <string, string> passwordHasher, int maxLoginAttempts, Func <DateTimeOffset> lockoutPolicy) { var handler = new UserCommandHandler(tokenSource, passwordHasher, maxLoginAttempts, lockoutPolicy); var userRegistry = registry.For <User>(); userRegistry .WithDefaults(repository.SaveNew, id => repository.Load(id), repository.Save) .Create <CreateUser>(handler.Create) .Execute <VerifyEmailAndSetPassword>(handler.Execute) .Execute <ChangeEmail>(handler.Execute) .Execute <VerifyEmail>(handler.Execute) .Execute <ChangePassword>(handler.Execute) .Execute <ChangeName>(handler.Execute) .Execute <RequestResetPassword>(handler.Execute) .Execute <SetPassword>(handler.Execute); userRegistry .WithDefaults( (_, __) => throw new NotSupportedException(), id => repository.Load(id, true), repository.Save) .Execute <LoginUser, LoginResult>(handler.Execute) .Execute <ManualUnlock>(handler.Execute) .Execute <ManualLock>(handler.Execute); return(registry); }
public static ICommandRegistryWithDefaults <T> WithDefaults <T>( this ICommandRegistry registry, Func <string, IReadOnlyList <Event>, Task <IReadOnlyList <StreamVersion> > > saveNew, Func <string, Task <LoadResult <T> > > loadExisting, Func <string, IReadOnlyList <Event>, IReadOnlyList <StreamVersion>, Task <IReadOnlyList <StreamVersion> > > saveExisting ) where T : Aggregate { return(WithDefaults(registry.For <T>(), saveNew, loadExisting, saveExisting)); }