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); } }
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); } }