Ejemplo n.º 1
0
        public bool checkPassword(string userPassword, int numberOfItterations)
        {
            UserContext db = new UserContext();

            foreach (User user in db.Users.Include("UserProfile").ToList())
            {
                byte[] userHash = user.Hash;
                byte[] userSalt = user.Salt;

                Rfc2898DeriveBytes PBKDF2 = new Rfc2898DeriveBytes(userPassword, userSalt, numberOfItterations);

                byte[] hashedPassword = PBKDF2.GetBytes(20);

                bool passwordsMach = userHash.SequenceEqual(hashedPassword);

                if (passwordsMach)
                {
                    authorizedUser.Login                = user.Login;
                    authorizedUser.Hash                 = user.Hash;
                    authorizedUser.Salt                 = user.Salt;
                    authorizedUser.FirstName            = user.UserProfile.FirstName;
                    authorizedUser.SecondName           = user.UserProfile.SecondName;
                    authorizedUser.MiddleName           = user.UserProfile.MiddleName;
                    authorizedUser.PhoneNumber          = user.UserProfile.PhoneNumber;
                    authorizedUser.DateOfBirth          = user.UserProfile.DateOfBirth;
                    authorizedUser.PassportSerialNumber = user.UserProfile.PassportSerialNumber;
                    authorizedUser.Email                = user.UserProfile.Email;
                    authorizedUser.RegistrationDate     = user.UserProfile.RegistrationDate;
                    authorizedUser.CountOfRentedCars    = user.UserProfile.CountOfRentedCars;
                    authorizedUser.Admin                = user.UserProfile.Admin;



                    CarRental_User rent = new CarRental_User();
                    rent.us = authorizedUser;

                    if (user.UserProfile.Admin)
                    {
                        isAdmin = true;
                    }
                    return(true);
                }
            }
            return(false);
        }
Ejemplo n.º 2
0
        private void loginButton_Click(object sender, RoutedEventArgs e)
        {
            using (UserContext db = new UserContext())
            {
                bool flag = checkPassword(passwordPasswordbox.Password, 25);

                if (flag)
                {
                    if (isAdmin)
                    {
                        CarRental_Adm admin = new CarRental_Adm();

                        admin.Show();
                        this.Owner.Close();
                        this.Close();
                        return;
                    }
                    if (!isAdmin)
                    {
                        CarRental_User user = new CarRental_User();
                        user.welcomeLabel.Content = "Добро пожаловать, " + authorizedUser.FirstName;
                        user.us = authorizedUser;

                        foreach (User u in db.Users.Include("Promocode"))
                        {
                            if (u.Login == authorizedUser.Login)
                            {
                                if (u.Promocode.Id != 1)
                                {
                                    user.usedPromoLabel.Content = "Активный промокод: " + u.Promocode.Effect;
                                    if (u.Promocode.Effect == "Скидка 10%")
                                    {
                                        foreach (Car c in user.cars)
                                        {
                                            c.Price *= 0.9;
                                        }
                                    }
                                    else if (u.Promocode.Effect == "Скидка 20%")
                                    {
                                        foreach (Car c in user.cars)
                                        {
                                            c.Price *= 0.8;
                                        }
                                    }
                                    else if (u.Promocode.Effect == "Скидка 30%")
                                    {
                                        foreach (Car c in user.cars)
                                        {
                                            c.Price *= 0.7;
                                        }
                                    }
                                    else if (u.Promocode.Effect == "1 прокат")
                                    {
                                        foreach (Car c in user.cars)
                                        {
                                            c.Price = 0;
                                        }
                                    }
                                    user.carbGrid.Items.Refresh();
                                }
                            }
                        }

                        //if (authorizedUser.Promocode != null)
                        //{
                        //    Promocode promo = db.Promocodes.Where(p => p.Value == authorizedUser.Promocode).FirstOrDefault();
                        //    if (promo != null)
                        //    {
                        //        user.usedPromoLabel.Content = "Активный промокод: " + promo.Effect;

                        //        if (promo.Effect == "Скидка 10%")
                        //        {
                        //            foreach (Car c in user.cars)
                        //            {
                        //                c.Price *= 0.9;
                        //            }
                        //        }
                        //        else if (promo.Effect == "Скидка 20%")
                        //        {
                        //            foreach (Car c in user.cars)
                        //            {
                        //                c.Price *= 0.8;
                        //            }
                        //        }
                        //        else if (promo.Effect == "Скидка 30%")
                        //        {
                        //            foreach (Car c in user.cars)
                        //            {
                        //                c.Price *= 0.7;
                        //            }
                        //        }
                        //        else if (promo.Effect == "1 прокат")
                        //        {
                        //            foreach (Car c in user.cars)
                        //            {
                        //                c.Price = 0;
                        //            }
                        //        }
                        //        user.carbGrid.Items.Refresh();
                        //    }
                        //}

                        user.firstNameTextbox.Text         = authorizedUser.FirstName;
                        user.secondNameTextbox.Text        = authorizedUser.SecondName;
                        user.middleNameTextbox.Text        = authorizedUser.MiddleName;
                        user.phoneNumberTextbox.Text       = authorizedUser.PhoneNumber;
                        user.birthDatePicker.SelectedDate  = Convert.ToDateTime(authorizedUser.DateOfBirth);
                        user.passportNumberTextbox.Text    = authorizedUser.PassportSerialNumber;
                        user.emailTextbox.Text             = authorizedUser.Email;
                        user.LoginLabel.Content            = authorizedUser.Login;
                        user.RegistrationDateLabel.Content = authorizedUser.RegistrationDate;
                        user.RentedCarsCountLabel.Content  = authorizedUser.CountOfRentedCars;

                        db.SaveChanges();

                        user.Show();

                        foreach (User u in db.Users.Include("UserProfile").Include("Car"))
                        {
                            if (u.Login == authorizedUser.Login)
                            {
                                if (u.Car.Id != 1)
                                {
                                    if (Convert.ToDateTime(u.Car.ReturnDate) < DateTime.Now)
                                    {
                                        MessageBox.Show("Уважаемый пользователь!" + "\n"
                                                        + "Мы вынуждены сообщить Вам о том, что срок Вашей последней аренды автомобиля истек и вы не вернули его вовремя." + "\n"
                                                        + "В связи с этим в дальнейшем Вы не сможете пользоваться данным приложением до тех пор, пока не погасите задолженность.");

                                        user.Ban();
                                    }
                                    else if (Convert.ToDateTime(u.Car.ReturnDate).Day >= DateTime.Now.Day)
                                    {
                                        user.returnCarButton.Visibility = Visibility.Visible;
                                        user.returnCarButton.IsEnabled  = true;
                                    }
                                }
                            }
                        }

                        this.Owner.Close();
                        this.Close();
                        return;
                    }
                }

                MessageBox.Show("Неверный логин или пароль");
            }
        }