using Renci.SshNet; using ResevalnaScanner.Classes; using System; using System.Collections.Generic; using System.Data; using System.Threading.Tasks; using System.Windows; using InfosysPublisher.Classes; using Microsoft.Data.SqlClient; namespace InfosysPublisher { /// /// Interaction logic for WinLogin.xaml /// public partial class WinLogin : Window { public WinLogin() { InitializeComponent(); } private async void Login_OnClick(object sender, RoutedEventArgs e) { var succeeded = false; var isLockedOut = false; var username = tbUsername.Text; var password = tbPassword.Password; User user = null; await Task.Run(() => { using var sqlConnection = new SqlConnection(App.SqlConnectionString); sqlConnection.Open(); var sqlCommandString = @" SELECT ID_Uporabnik, UporabniskoIme, Ime, Priimek, GesloBytes, SaltBytes, Aktiven FROM Uporabnik WHERE UporabniskoIme = @uporabniskoIme AND GesloBytes IS NOT NULL AND SaltBytes IS NOT NULL" ; using var sqlCommand = new SqlCommand(sqlCommandString, sqlConnection); sqlCommand.Parameters.AddWithValue("uporabniskoIme", username); using var sqlDataReader = sqlCommand.ExecuteReader(); if (sqlDataReader.Read()) { if (sqlDataReader.GetString("UporabniskoIme") == username && Encryption.CompareByteArrays(Encryption.CreatePasswordHash(password, (byte[])sqlDataReader.GetValue("SaltBytes")).Hash, (byte[])sqlDataReader.GetValue("GesloBytes"))) { if (sqlDataReader.GetBoolean("Aktiven")) { user = new User { Id = sqlDataReader.GetInt32(sqlDataReader.GetOrdinal("ID_Uporabnik")), Name = sqlDataReader.GetString(sqlDataReader.GetOrdinal("Ime")), Surname = sqlDataReader.GetString(sqlDataReader.GetOrdinal("Priimek")), Username = sqlDataReader.GetString(sqlDataReader.GetOrdinal("UporabniskoIme")), }; succeeded = true; } else { isLockedOut = true; } } } else { //zato da ne takoj konca Encryption.CompareByteArrays(Encryption.CreatePasswordHash(password).Hash, new byte[4] { 0, 1, 0, 1 }); } }); tbPassword.Password = ""; if (!succeeded) { MessageBox.Show("Wrong login data!", "Login", MessageBoxButton.OK, MessageBoxImage.Stop); return; } App.User = user; this.Hide(); var win = new WinMain(); win.ShowDialog(); this.Show(); this.Close(); } } }