コード例 #1
0
        public User Login(string login, string password, bool onLogin)
        {
            var user = dataBase.Users.FirstOrDefault(u => u.UserName.Equals(login, StringComparison.CurrentCultureIgnoreCase) || u.Email == login);

            if (user == null)
            {
                return(null);
            }

            if (onLogin)
            {
                if (hasher.HashWithSalt(password, hasher.GetSalt(user.Password)) == hasher.GetHashedPasswordWithoutSalt(user.Password))
                {
                    return(user);
                }
            }

            else
            {
                if (password == hasher.GetHashedPasswordWithoutSalt(user.Password))
                {
                    return(user);
                }
            }


            return(null);
        }
コード例 #2
0
        public void Handle(RegisterNewUserCommand message)
        {
            if (!message.IsValid())
            {
                NotifyValidationErrors(message);
                return;
            }

            if (userRepository.GetByEmail(message.Email) != null)
            {
                mediatorHandler.RaiseEvent(new DomainNotification(message.MessageType, "The user e-mail has already been taken."));
                return;
            }

            var role         = this.roleRepository.GetById(message.RoleId);
            var user         = new User(Guid.NewGuid(), message.Name, true, message.Email, role);
            var hashPassword = passwordHasher.HashPassword(message.Password);

            user.Password     = hashPassword;
            user.PasswordSalt = passwordHasher.GetSalt();

            this.userRepository.Add(user);
            if (this.Commit())
            {
                mediatorHandler.RaiseEvent(new ClientRegisteredEvent(user.Id, user.Name, user.Email));
            }
        }
コード例 #3
0
        public async Task Handle(ChangeUserPasswordCommand command)
        {
            string salt = await _passwordHasher.GetSalt();

            string passwordHash = await _passwordHasher.HashString(command.Password, salt);

            await _repository.UpdatePassword(command.UserId, passwordHash, salt);
        }
コード例 #4
0
        private async Task CopyDataToSaga(BehaviorContext <UserRegistrationSagaData, RegisterUserCommand> context)
        {
            string salt = await _passwordHasher.GetSalt();

            context.Instance.Id           = context.Data.Id;
            context.Instance.BaseUrl      = context.Data.BaseUrl;
            context.Instance.LoginName    = context.Data.LoginName;
            context.Instance.Name         = context.Data.Name;
            context.Instance.Surname      = context.Data.Surname;
            context.Instance.PasswordHash = await _passwordHasher.HashString(context.Data.Password, salt);

            context.Instance.PasswordSalt    = salt;
            context.Instance.Email           = context.Data.Email;
            context.Instance.TelephoneNumber = context.Data.TelephoneNumber;
        }