Example #1
0
        public Result UpdateCustomer(EditedCustomer editedCustomer, IRepositoriesHandler repositoriesHandler, IPasswordService passwordService, IResourcesProvider resourcesProvider)
        {
            var result       = new Result();
            var isLoginExist = repositoriesHandler.СustomerRepository.GetCollection().Any(x => x.Login == editedCustomer.Login && x.CustomerID != editedCustomer.CustomerID);

            if (isLoginExist)
            {
                result.Success = false;
                result.Error   = resourcesProvider.GetGeneralResource("LogExist");
                return(result);
            }

            if (editedCustomer.CustomerID == 0)
            {
                result.Success = false;
                result.Error   = resourcesProvider.GetGeneralResource("CusIdNull");
                return(result);
            }

            if (!IsCutomerDataValid(editedCustomer.Login, editedCustomer.CurrentPassword))
            {
                result.Success = false;
                result.Error   = resourcesProvider.GetGeneralResource("NoLogPass");
                return(result);
            }

            var storedCustomer = repositoriesHandler.СustomerRepository.GetById(editedCustomer.CustomerID);

            if (passwordService.ComparePasswords(editedCustomer.CurrentPassword, storedCustomer.Password))
            {
                storedCustomer.CustomerID = editedCustomer.CustomerID;
                storedCustomer.FirstName  = editedCustomer.FirstName;
                storedCustomer.LastName   = editedCustomer.LastName;
                storedCustomer.Login      = editedCustomer.Login;
                storedCustomer.Password   = string.IsNullOrEmpty(editedCustomer.NewPassword) ? storedCustomer.Password : passwordService.HashPassword(editedCustomer.NewPassword);
                repositoriesHandler.СustomerRepository.Update(storedCustomer);
                result.Success        = true;
                result.SuccessMessage = resourcesProvider.GetGeneralResource("CusUpdt");
                return(result);
            }
            else
            {
                result.Success = false;
                result.Error   = resourcesProvider.GetGeneralResource("PassDontMatch");
                return(result);
            }
        }
Example #2
0
        public async Task <AccountJwtToken> LoginAccount(AccountSignIn accountSignIn)
        {
            var accountRepo = _unitOfWork.GetRepository <Models.Entities.Account>();

            //Check how many login attempts ip have
            var count = await CountLoginAttempt(accountSignIn);

            //TODO Config instead of value
            if (count <= 6)
            {
                //Get account by username
                var account =
                    await accountRepo.GetFirstOrDefaultAsync(predicate : a => a.UserName == accountSignIn.UserName);

                if (account == null)
                {
                    //If account did not exists try to get with email
                    account = await accountRepo.GetFirstOrDefaultAsync(
                        predicate : a => a.Email == accountSignIn.UserName);
                }

                //Check if account is verified
                if (account.Verified)
                {
                    //Compare account password with database
                    if (_passwordService.ComparePasswords(accountSignIn.Password, account.Password, account.Salt))
                    {
                        //Return the created token for account
                        return(CreateJwtToken(account));
                    }
                }

                //Create login attempt
                await CreateLoginAttempt(accountSignIn);

                return(null);
            }

            //Create login attempt
            await CreateLoginAttempt(accountSignIn);

            return(null);
        }
        public async Task <SessionKey> AuthenticateUser(CustomerSignin request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            Customer cust;

            try
            {
                //check if customer exists and fetch it if it does
                cust = await customerRepo.FindAsync(request.email).ConfigureAwait(true);
            }
            catch (Exception)
            {
                throw;
            }

            if (cust == null)
            {
                throw new ArgumentException($"a customer with the email {request.email} does not exist");
            }

            SessionKey key = null;

            try
            {
                //check if customer password matches
                if (passwordService.ComparePasswords(request.password, cust.GetPassword(), cust.GetSalt()))
                {
                    //create new session key and return it to the requestee
                    key = await sessionKeyRepo.InsertAsync(new SessionKeyParams(request.email)).ConfigureAwait(true);
                }
            }
            catch (Exception)
            {
                throw;
            }

            return(key);
        }
Example #4
0
        public Result UpdateCreditCard(EditedCreditCard editedCreditCard, IRepositoriesHandler repositoriesHandler, IPasswordService passwordService, IResourcesProvider resourcesProvider)
        {
            var result         = new Result();
            var isCardNumExist = repositoriesHandler.СreditCardRepository.GetCollection().Any(x => x.CardNumber == editedCreditCard.CardNumber && x.CreditCardID != editedCreditCard.CreditCardID);

            if (isCardNumExist)
            {
                result.Success = false;
                result.Error   = resourcesProvider.GetGeneralResource("CCNumExist");
                return(result);
            }

            if (!IsCreditCardDataValid(editedCreditCard.CardNumber, editedCreditCard.CurrentPIN))
            {
                result.Success = false;
                result.Error   = resourcesProvider.GetGeneralResource("NoNumPin");
                return(result);
            }

            var storedCreditCard = repositoriesHandler.СreditCardRepository.GetById(editedCreditCard.CreditCardID);

            if (passwordService.ComparePasswords(editedCreditCard.CurrentPIN, storedCreditCard.PIN))
            {
                storedCreditCard.CardNumber = editedCreditCard.CardNumber;
                storedCreditCard.Amount     = editedCreditCard.Amount;
                storedCreditCard.PIN        = string.IsNullOrEmpty(editedCreditCard.NewPIN) ? storedCreditCard.PIN : passwordService.HashPassword(editedCreditCard.NewPIN);
                repositoriesHandler.СreditCardRepository.Update(storedCreditCard);
                result.Success        = true;
                result.SuccessMessage = resourcesProvider.GetGeneralResource("CCUpdt");
                return(result);
            }
            else
            {
                result.Success = false;
                result.Error   = resourcesProvider.GetGeneralResource("PinsDontMatch");
                return(result);
            }
        }