Example #1
0
        /// <summary>
        /// Авторизоваться пользователем сети.
        /// </summary>
        /// <param name="login"> Логин. </param>
        /// <param name="password"> Пароль. </param>
        /// <returns> Пользователь сети. null если не удалось авторизоваться. </returns>
        public User LoginUser(string login, string password)
        {
            if (string.IsNullOrEmpty(login))
            {
                throw new ArgumentException("Логин не может быть пустым или равным null.", nameof(login));
            }

            if (string.IsNullOrEmpty(password))
            {
                throw new ArgumentException("Пароль не может быть пустым или равным null.", nameof(password));
            }

            BlockchainMSSQL.User user = _dataProvider.FindUser(login);

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

            var passwordHash = password.GetHash();

            if (user.Password != passwordHash)
            {
                return(null);
            }

            // Session.SetCurrentUser(user);

            return(user);
        }
Example #2
0
        /// <summary>
        /// Создать экземпляр блока.
        /// </summary>
        /// <param name="previousBlock">Предыдущий блок.</param>
        /// <param name="data">Данные, сохраняемые в блоке.</param>
        /// <param name="algorithm">Алгоритм хеширования.</param>
        /// <param name="user"> Идентификатор пользователя, создавшего блок. </param>
        public Block(Block previousBlock, Data data, BlockchainMSSQL.User userFrom, BlockchainMSSQL.User userTo, double money, IAlgorithm algorithm = null)
        {
            #region Requires
            if (previousBlock == null)
            {
                throw new ArgumentException("Предыдущий блок не может быть равен null.", nameof(previousBlock));
            }

            if (!previousBlock.IsCorrect())
            {
                throw new ArgumentException("Предыдущий блок некорректный.", nameof(previousBlock));
            }

            if (data == null)
            {
                throw new ArgumentException("Данные не могут быть равны null.", nameof(data));
            }

            if (!data.IsCorrect())
            {
                throw new ArgumentException("Данные некорректные.", nameof(data));
            }
            #endregion

            if (algorithm != null)
            {
                _algorithm = algorithm;
            }

            Version      = 1;
            CreatedOn    = DateTime.Now.ToUniversalTime();
            PreviousHash = previousBlock.Hash;
            Data         = data;
            UserFrom     = userFrom ?? throw new ArgumentException("Пользователь не может быть равен null.", nameof(userFrom));
            UserTo       = userTo ?? throw new ArgumentException("Пользователь не может быть равен null.", nameof(userTo));
            Hash         = this.GetHash(_algorithm);
            Money        = money;

            if (!this.IsCorrect())
            {
                throw new ArgumentException("Ошибка создания блока. Блок некорректный.", nameof(Block));
            }
        }