Example #1
0
        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);
        }
Example #5
0
        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);
        }
Example #7
0
        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);
        }