101 lines
3.3 KiB
C#
101 lines
3.3 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for WinLogin.xaml
|
|
/// </summary>
|
|
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();
|
|
}
|
|
}
|
|
}
|