Esempio n. 1
0
        private void btnLogin_Click(object sender, RoutedEventArgs e)
        {
            if (txbUsername.Text != "" && pwbPassword.Password != "") // Tarkistetaan, että kentät eivät ole tyhjät
            {
                // Tarkistetaan löytyykö käyttäjää tällä nimellä
                bool userExists = DatabaseAccess.CheckIfUserExistInSQLite(txbUsername.Text);
                if (userExists == true)
                {
                    // Hashataan syötetty salasana
                    string rawPwd               = pwbPassword.Password;
                    string salt                 = DatabaseAccess.GetUserSaltFromSQLite(txbUsername.Text);
                    string rawPwdSalted         = rawPwd + salt;
                    string hashedAndSaltedInput = Security.ComputeSha256Hash(rawPwdSalted);


                    if (salt == string.Empty)                                                        // tarkistetaan, onko salt saatu
                    {
                        MessageBox.Show("Salt could not be acquired", "Error", MessageBoxButton.OK); // Jos tulee virhe, näytetään messagebox
                    }
                    else
                    {
                        // Tarkistetaan onko syötetty salasana oikein (verrataan saltattua ja hashattua salasanaa tietokannassa olevaan salted hashiin kyseisellä käyttäjänimellä)
                        int userID = DatabaseAccess.LoginToDatabase(txbUsername.Text, hashedAndSaltedInput);

                        if (userID != 0)
                        {
                            try
                            {
                                // Välitetään userID pääikkunaan
                                MainWindow mainWindow = new MainWindow(userID);
                                mainWindow.Show();
                                this.Close();
                            }
                            catch (InvalidOperationException ex)
                            {
                                MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK); // Jos tulee virhe, näytetään messagebox
                            }
                        }
                        else
                        {
                            // jos käyttäjänimi/salasana on väärin ilmoitetaan siitä
                            MessageBox.Show("Login failed! Username or Password is wrong.", "Error login", MessageBoxButton.OK);
                            pwbPassword.Password = "";
                        }
                    }
                }
                else
                {
                    // jos käyttäjänimeä ei löydy
                    MessageBox.Show("Login failed! Username not found", "Error login", MessageBoxButton.OK);
                    txbUsername.Text     = "";
                    pwbPassword.Password = "";
                }
            }
            else
            {
                MessageBox.Show("No username or password inputted!", "Input username or password", MessageBoxButton.OK);
            }
        }
Esempio n. 2
0
        private void btnRegister_Click(object sender, RoutedEventArgs e)
        {
            // rekisteröintinappia painettaessa, asetetaan muuttujiin käyttäjänimi ja salasanat
            string username = txbUsername.Text;
            string pwd1     = pwbPass1.Password;
            string pwd2     = pwbPass2.Password;

            // tarkistetaan onko salasanakentässä 5 merkkiä tai alle
            if (pwd1.Length <= 5)
            {
                MessageBox.Show($"The password needs to be at least 6 characters long.");
                pwbPass1.Password = "";
                pwbPass2.Password = "";
                return;
            }

            // tarkistetaan onko käyttäjänimi vapaana
            bool res = DatabaseAccess.CheckIfUserExistInSQLite(username);

            if (res == true)
            {
                MessageBox.Show($"Username '{username}' is already in use.", "Information", MessageBoxButton.OK);
                txbUsername.Text  = "";
                pwbPass1.Password = "";
                pwbPass2.Password = "";
                return;
            }
            // tarkistetaan täsmääkö salasanat
            if (pwd1 != pwd2)
            {
                MessageBox.Show("Password doesn't match!", "Error", MessageBoxButton.OK);
                pwbPass1.Password = "";
                pwbPass2.Password = "";
                return;
            }
            // luodaan käyttäjälle salt
            string salt = Security.ComputeSaltString();
            // saltataan ja hashataan salasana
            string pwdHashSalted = Security.ComputeSha256Hash(pwd1 + salt);
            // tallennetaan tiedot tietokantaan
            bool res2 = DatabaseAccess.SaveUserToSQL(username, salt, pwdHashSalted);

            try
            {   // Näytetään joko onnistumisboksi tai epäonnistumisboksi, kun tallennetaan
                if (res2 == true)
                {
                    MessageBox.Show($"User '{username}' saved succesfully.", "Information", MessageBoxButton.OK);
                    Login loginWindow = new Login();
                    loginWindow.Show();
                    this.Close();
                }
                else
                {
                    MessageBox.Show($"User '{username}' can not be saved.", "Error", MessageBoxButton.OK);
                    txbUsername.Text  = "";
                    pwbPass1.Password = "";
                    pwbPass2.Password = "";
                }
            }
            catch (InvalidOperationException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK);
            }
        }