public async Task <IdentityResult> CreateAsync(IUser user, CancellationToken cancellationToken = default(CancellationToken)) { if (user == null) { throw new ArgumentNullException(nameof(user)); } if (!(user is User newUser)) { throw new ArgumentException("Expected a User instance.", nameof(user)); } var newUserId = newUser.UserId; if (String.IsNullOrEmpty(newUserId)) { // Due to database collation we normalize the userId to lower invariant. newUserId = _userIdGenerator.GenerateUniqueId(user).ToLowerInvariant(); } try { var attempts = 10; while (await _session.QueryIndex <UserIndex>(x => x.UserId == newUserId).CountAsync() != 0) { if (attempts-- == 0) { throw new ApplicationException("Couldn't generate a unique user id. Too many attempts."); } newUserId = _userIdGenerator.GenerateUniqueId(user).ToLowerInvariant(); } newUser.UserId = newUserId; var context = new UserCreateContext(user); await Handlers.InvokeAsync((handler, context) => handler.CreatingAsync(context), context, _logger); if (context.Cancel) { return(IdentityResult.Failed()); } _session.Save(user); await _session.SaveChangesAsync(); await Handlers.InvokeAsync((handler, context) => handler.CreatedAsync(context), context, _logger); } catch (Exception e) { _logger.LogError(e, "Unexpected error while creating a new user."); return(IdentityResult.Failed()); } return(IdentityResult.Success); }
public Task CreatingAsync(UserCreateContext context) => Task.CompletedTask;
public Task CreatingAsync(UserCreateContext context) { return(Task.CompletedTask); }
public Task CreatedAsync(UserCreateContext context) => RecordAuditTrailEventAsync(UserAuditTrailEventConfiguration.Created, context.User, _httpContextAccessor.HttpContext.User?.FindFirstValue(ClaimTypes.NameIdentifier), _httpContextAccessor.HttpContext.User?.Identity?.Name);
public override Task CreatedAsync(UserCreateContext context) { return(TriggerWorkflowEventAsync(nameof(UserCreatedEvent), (User)context.User)); }