/// <summary> /// Metoda koja prijavljuje korisnika u bazu podataka te vraća odgovarajuće podatke korisnika. /// Ukoliko korisnik prilikom registracije nije odabrao 2FA autentifikaciju vraćaju se njegovi podaci iz baze podataka. /// Ukoliko je korisnik prilikom registracije odabrao 2FA autentifikaciju vraća se Username,Password i obavijest o 2FA autentifikaciji u obliku korisničkoga JSON-a /// </summary> /// <param name="connection"></param> /// <returns></returns> public string PrijavaKorisnika(SqlConnection connection) { string rezultat = ""; var command = new SqlCommand(); command.Connection = connection; command.CommandType = CommandType.Text; command.CommandText = "SELECT Korisnik.*,TipoviKorisnika.Naziv FROM Korisnik,TipoviKorisnika WHERE Username=@Username AND Password=@Password AND TipKorisnika=Id"; command.Parameters.AddWithValue("@Password", Password); command.Parameters.AddWithValue("@Username", Username); using (SqlDataReader reader = command.ExecuteReader()) { if (!reader.HasRows) { Username = null; Password = null; } else if (reader.Read()) { if (Convert.ToInt32(reader["Status"]) == 0) { Username = null; Password = null; } else { Username = reader["Username"].ToString(); Ime = reader["Ime"].ToString(); Prezime = reader["Prezime"].ToString(); Email = reader["Email"].ToString(); BrojTelefona = reader["BrojTelefona"].ToString(); DatumRodjenja = reader["DatumRodjenja"].ToString(); Kljuc2FA = reader["Kljuc2FA"].ToString(); Status = Convert.ToInt32(reader["Status"]); TipKorisnika = reader["Naziv"].ToString(); } } } if (Kljuc2FA != "" && Kljuc2FA != "null") { Korisnik novi = new Korisnik(); Verficiranje2FA verificiraj = new Verficiranje2FA(); Kljuc2FA = verificiraj.GenerirajKljuc2FA(); UnesiUBazuKljuc2FA(connection); verificiraj.PosaljiPorukuNaMobilni(BrojTelefona); novi.Username = Username; novi.Password = Password; novi.Kljuc2FA = "DA"; rezultat = JsonPretvarac.Serijalizacija(novi); return(rezultat); } rezultat = JsonPretvarac.Serijalizacija(this); return(rezultat); }
/// <summary> /// Pomoćna funkcija za funkciju RegistrirajKorisnika() koja zapisuje sve potrebne ključeve u bazu podataka(Javni,Privatni,2FA) /// </summary> /// <param name="connection"></param> private void ZapisiKljuceveUBazu(SqlConnection connection) { var command = new SqlCommand(); Enkripcija enkripcija = new RsaEnkripcija(); enkripcija.AssignRsaKeys(); JavniKljuc = enkripcija.DohvatiJavniKljuc(); command = new SqlCommand(); command.Connection = connection; command.CommandType = CommandType.Text; command.CommandText = "UPDATE Korisnik SET JavniKljuc = @JavniKljuc WHERE Username=@Username"; command.Parameters.AddWithValue("@JavniKljuc", JavniKljuc); command.Parameters.AddWithValue("@Username", Username); command.ExecuteNonQuery(); command = new SqlCommand(); command.Connection = connection; command.CommandType = CommandType.Text; command.CommandText = "INSERT INTO PrivatniKljucevi(Username,PrivatniKljuc) VALUES (@Username,@PrivatniKljuc)"; command.Parameters.AddWithValue("@PrivatniKljuc", enkripcija.DohvatiPrivatniKljuc()); command.Parameters.AddWithValue("@Username", Username); command.ExecuteNonQuery(); if (Kljuc2FA == "DA") { Verficiranje2FA verificiranje = new Verficiranje2FA(); Kljuc2FA = verificiranje.GenerirajKljuc2FA(); command = new SqlCommand(); command.Connection = connection; command.CommandType = CommandType.Text; command.CommandText = "UPDATE Korisnik SET Kljuc2FA = @Kljuc2FA WHERE Username=@Username"; command.Parameters.AddWithValue("@Kljuc2FA", Kljuc2FA); command.Parameters.AddWithValue("@Username", Username); command.ExecuteNonQuery(); } DropboxManager dropbox = new DropboxManager(); dropbox.CreateANewFolder(Username); }