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