public async Task AddClientAsync(Client client) { var domainModelClient = client.ToEntity(); _identityDbContext.Clients.Add(domainModelClient); await _identityDbContext.SaveChangesAsync(); }
public async Task <User> AddUserAsync(User user) { var userEntity = user.ToEntity(); _identityDbContext.Users.Add(userEntity); await _identityDbContext.SaveChangesAsync(); return(user); }
private async Task DeletePersistedGrantsAsync(IQueryable <PersistedGrant> persistedGrants) { await persistedGrants.ForEachAsync(pg => _identityDbContext.PersistedGrants.Remove(pg)); try { await _identityDbContext.SaveChangesAsync(); } catch (DbUpdateConcurrencyException ex) { _logger.Warning("Exception removing persistedGrants from the database. Error: {message}", ex.Message); } }
public async Task <Unit> Handle(UserPasswordResetCommand request, CancellationToken cancellationToken) { var resetToken = await _context .PasswordResetTokens .Include(x => x.Token) .Include(x => x.User) .FirstOrDefaultAsync(x => x.Token.Value == request.ResetToken); if (resetToken == default) { throw new UserPasswordResetException("Reset token cannot be found."); } if (DateTime.UtcNow > resetToken.Token.DateExpires) { throw new UserPasswordResetException("Reset token has expired."); } //Generate the new hashed password and update the user entity var hashedPassword = await _hashingService.CreateHash(request.Password); resetToken.User.HashedPassword = hashedPassword; resetToken.Token.Consumed = true; await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task <Unit> Handle(UserActivateCommand request, CancellationToken cancellationToken) { var activationToken = await _context .ActivationTokens .Include(x => x.Token) .Include(x => x.User) .FirstOrDefaultAsync(x => x.Token.Value == request.ActivationToken); if (activationToken == default) { throw new UserActivationException("Activation token cannot be found."); } if (activationToken.User.Active) { throw new UserActivationException("User has already activated."); } if (DateTime.UtcNow > activationToken.Token.DateExpires) { throw new UserActivationException("Activation token is expired."); } //Generate the new hashed password and update the user entity var hashedPassword = await _hashingService.CreateHash(request.Password); activationToken.User.Username = request.Username; activationToken.User.HashedPassword = hashedPassword; activationToken.User.Active = true; activationToken.User.IsEmailVerified = true; activationToken.Token.Consumed = true; await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task <Unit> Handle(UserPasswordResetRequestCommand request, CancellationToken cancellationToken) { var user = await _context.Users.FirstOrDefaultAsync(x => x.EmailAddress == request.Email); if (user == default) { return(Unit.Value); } var token = Guid.NewGuid().ToString(); user.PasswordResetTokens.Add(new Entities.UserPasswordResetToken { Token = new Entities.OneTimeUseToken { Value = token, DateCreated = DateTime.UtcNow, DateExpires = DateTime.UtcNow.AddHours(24), Consumed = false } }); await _context.SaveChangesAsync(cancellationToken); await _emailService.SendPasswordResetEmail(user.EmailAddress, token); return(Unit.Value); }
public async Task <UserCreateCommandResult> Handle(UserCreateCommand request, CancellationToken cancellationToken) { var activationToken = Guid.NewGuid().ToString(); var user = new User { Active = false, DateCreated = DateTime.UtcNow, DateLastModified = DateTime.UtcNow, EmailAddress = request.Email, ActivationTokens = new List <UserActivationToken> { new UserActivationToken { Token = new OneTimeUseToken { Value = activationToken, DateCreated = DateTime.UtcNow, DateExpires = DateTime.UtcNow.AddHours(24), Consumed = false } } } }; await _context.Users.AddAsync(user); await _context.SaveChangesAsync(cancellationToken); await _emailService.SendWelcomeEmail(request.Email, activationToken); return(new UserCreateCommandResult { UserId = user.Id, ActivationToken = activationToken }); }
public async Task <IdentityUserClaim> AddClaim(IdentityUserClaim claim) { var user = await _context.Users.SingleAsync(u => u.Id == claim.UserId); user.Claims.Add(claim); await _context.SaveChangesAsync(); return(claim); }