/// <summary> /// Metoda koja prihvaća username i status korisnika kojem se želi promijeniti status u otključani ili zaključani račun. /// Šalje odgovarajuće podatke prema serveru te će se na serveru izvršiti sama promjena statusa. /// </summary> /// <param name="username"></param> /// <param name="status"></param> private void PromijeniStatus(string username, string status) { korisnik = new Korisnik(); korisnik.Username = username; if (status == "Otključan") { korisnik.Status = 0; } else { korisnik.Status = 1; } klijent = new TcpKlijent(); klijent.PosaljiServeru(korisnik, "OtkljucajZakljucaj"); listaKorisnika = (ListaKorisnika)klijent.PrimiOdServera(); tablicaKorisnici.Rows.Clear(); tablicaKorisnici.Refresh(); for (int i = 0; i < listaKorisnika.Korisnici.Count; i++) { korisnik = listaKorisnika.Korisnici[i]; int rowIndex = tablicaKorisnici.Rows.Add(korisnik.Username, korisnik.Ime, korisnik.Prezime, korisnik.DohvatiStatus()); } }
/// <summary> /// Event handler koji se aktivira prilikom klika na gumb za registraciju, šalju se uneseni podaci prema serveru, čeka /// se na odgovor servera. Postoje 2 slučaja u odgovoru - postojeći korisnik - ostajemo na registracijskoj formi te /// neposotojeći korisnik (može se registrirati) - povratak na login formu /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void gumbRegistracija_Click(object sender, EventArgs e) { if (ValidateForm() == true) { Korisnik registrirani = new Korisnik(); Korisnik trenutni = new Korisnik(); PridruziPodatkeKorisniku(trenutni); TcpKlijent klijent = new TcpKlijent(); klijent.PosaljiServeru(trenutni, "REGISTRACIJA"); UspjehRegistracije uspjeh = new UspjehRegistracije(); uspjeh = (UspjehRegistracije)klijent.PrimiOdServera(); if (uspjeh.PotvrdaKorisnika == 0) { MessageBox.Show("Korisnik već postoji, odaberite drugo korisničko ime"); } else { glavnaForma.NotifyMe(registrirani); //odi na login formu } } else { MessageBox.Show("Postoje neispravni podaci na formi - provjerite ih!"); } }
/// <summary> /// Event Handler koji se aktivira prilikom klika na gumb Login - validira se unos i šalju se podaci prema serveru te /// se čeka odgovor od strane servera. Postoje 3 slučaja - obavještava se glavna forma sa praznim korisničkim podacima /// što znači da su podaci neispravni, obavještava se glavna forma sa ispravnim korisničkim podacima te se korisnik /// prijavljuje u aplikaciju, a 3. slučaj odnosi se na otvaranje 2fa forme kako bi se potvrdila prijava unosom 2fa koda. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void gumbLogin_Click(object sender, EventArgs e) { if (Validacija() == false) { MessageBox.Show(validacijskaPoruka); return; } Korisnik trenutniKorisnik = new Korisnik(); trenutniKorisnik.Username = unosUsername.Text; trenutniKorisnik.Password = unosPassword.Text; try { TcpKlijent klijent = new TcpKlijent(); klijent.PosaljiServeru(trenutniKorisnik, "PRIJAVA"); trenutniKorisnik = null; trenutniKorisnik = (Korisnik)klijent.PrimiOdServera(); if (trenutniKorisnik.Kljuc2FA == "DA") { Forma2FA forma2FA = new Forma2FA(trenutniKorisnik, glavnaForma); forma2FA.Show(); } else { glavnaForma.NotifyMe(trenutniKorisnik); } } catch { return; } }
/// <summary> /// Event handler koji se aktivira prilikom klika na gumb Enkriptiraj i Pošalji. Poruci se pridružuje primatelj, pošiljatelj /// te datum slanja zajedno sa sadrzajem. Sa pomoću javnoga ključa formira se enkripcijski paket poruke te se takva poruka šalje /// prema serveru. Čeka se odgovor servera koji predstavlja Uspjeh Slanja Poruke - je li poruka poslana ili nije. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void gumbPosalji_Click(object sender, EventArgs e) { string sadrzaj; string javniKljuc; klijent = new TcpKlijent(); Poruka novaPoruka = new Poruka(); novaPoruka.Posiljatelj = prijavljeniKorisnik.Username; novaPoruka.Primatelj = odabirUsername.Text; novaPoruka.DatumSlanja = DateTime.Now; sadrzaj = unosSadrzaj.Text; javniKljuc = novaLista.Korisnici.Where(i => i.Username == novaPoruka.Primatelj).Select(p => p.JavniKljuc).First(); novaPoruka.FormirajEnkripcijskiPaket(sadrzaj, javniKljuc); klijent.PosaljiServeru(novaPoruka, "PosaljiPoruku"); uspjeh = (UspjehSlanjaPoruke)klijent.PrimiOdServera(); if (uspjeh.PorukaPoslana == "DA") { prikazLog.Text += "Vrijeme: " + DateTime.Now.ToString() + " - Poruka poslana" + Environment.NewLine; } else { prikazLog.Text += "Vrijeme: " + DateTime.Now.ToString() + " - Poruka nije poslana" + Environment.NewLine; } }
/// <summary> /// Metoda koja dohvaća korisnike aplikacije kako bi im se mogla poslati datoteka /// </summary> private void DohvatiKorisnike() { listaKorisnika = new ListaKorisnika(); klijent = new TcpKlijent(); klijent.PosaljiServeru(listaKorisnika, "DohvatiKorisnike"); listaKorisnika = (ListaKorisnika)klijent.PrimiOdServera(); odabirKorisnik.DataSource = listaKorisnika.IzdvojiKorisnickaImena(); odabirKorisnik.AutoCompleteSource = AutoCompleteSource.ListItems; }
/// <summary> /// Dohvaća podatke sa forme i šalje ih prema serveru radi ažuriranja podataka /// </summary> private void DohvatiIPosalji() { TcpKlijent klijent = new TcpKlijent(); prijavljeniKorisnik.Ime = urediIme.Text; prijavljeniKorisnik.Prezime = urediPrezime.Text; prijavljeniKorisnik.Email = urediEmail.Text; prijavljeniKorisnik.BrojTelefona = "+385" + urediBrojTelefona.Text; klijent.PosaljiServeru(prijavljeniKorisnik, "UrediPodatke"); prijavljeniKorisnik = (Korisnik)klijent.PrimiOdServera(); }
/// <summary> /// Konstruktor forme SlanjePoruka - prilikom inicijalizacije forme dohvaća se lista korisnika aplikacije /// </summary> /// <param name="glavna"></param> /// <param name="korisnik"></param> public SlanjePoruka(Form1 glavna, Korisnik korisnik) { InitializeComponent(); Dizajner.FormaBezOkna(this); glavnaForma = glavna; prijavljeniKorisnik = korisnik; klijent = new TcpKlijent(); novaLista = new ListaKorisnika(); klijent.PosaljiServeru(novaLista, "DohvatiKorisnike"); novaLista = (ListaKorisnika)klijent.PrimiOdServera(); odabirUsername.DataSource = novaLista.IzdvojiKorisnickaImena(); }
/// <summary> /// Metoda koja dohvaća korisnike i prikazuje ih u tablicki korisnika te admin može mijenjati status računa pojedinog korisnika /// </summary> private void DohvatiKorisnike() { klijent = new TcpKlijent(); listaKorisnika = new ListaKorisnika(); klijent.PosaljiServeru(listaKorisnika, "DohvatiKorisnike"); listaKorisnika = (ListaKorisnika)klijent.PrimiOdServera(); tablicaKorisnici.Rows.Clear(); tablicaKorisnici.Refresh(); for (int i = 0; i < listaKorisnika.Korisnici.Count; i++) { korisnik = listaKorisnika.Korisnici[i]; int rowIndex = tablicaKorisnici.Rows.Add(korisnik.Username, korisnik.Ime, korisnik.Prezime, korisnik.DohvatiStatus()); } }
/// <summary> /// Event Handler koji se kativira klikom na gumb posalji, tj šalje se 2fa kod (koji je /// prethodno stigao na mobilni telefon) putem forme prema serveru. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void gumbPosalji_Click(object sender, EventArgs e) { poslanoKorisnik.Kljuc2FA = unosKod.Text; TcpKlijent klijent = new TcpKlijent(); klijent.PosaljiServeru(poslanoKorisnik, "Potvrda2FA"); primljenoKorisnik = (Korisnik)klijent.PrimiOdServera(); if (primljenoKorisnik.Username == null) { MessageBox.Show("Niste unijeli ispravni 2FA Kod. Pokušajte ponovno!"); } else { glavnaForma.NotifyMe(primljenoKorisnik); } }
/// <summary> /// Event Handler koji se aktivira prilikom klika na određeni tab u formi. Ovisno na koji se tab klikne /// šalju se odgovarajući podaci prema serveru na temelju kojih se dohavaćaju poslane ili primljene poruke. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tabKontrola_SelectedIndexChanged(object sender, EventArgs e) { if (tabKontrola.SelectedIndex == 1) { dataGridViewPoslano.Rows.Clear(); dataGridViewPoslano.Refresh(); klijent = new TcpKlijent(); listaPoruka = new ListaPoruka(); listaPoruka.Username = prijavljeniKorisnik.Username; klijent.PosaljiServeru(listaPoruka, "DohvatiPoslanePoruke"); listaPoruka = (ListaPoruka)klijent.PrimiOdServera(); listaPoruka.Poruke = listaPoruka.Poruke.OrderByDescending(x => x.DatumSlanja).ToList(); for (int i = 0; i < listaPoruka.Poruke.Count; i++) { Poruka poruka = listaPoruka.Poruke[i]; EnkripcijskiPaket paket = listaPoruka.Poruke[i].Paket; dataGridViewPoslano.Rows.Add(poruka, poruka.Posiljatelj, poruka.Primatelj, poruka.DatumSlanja, paket.EnkriptiraniKljuc, paket.EnkriptiraniPodaci, Convert.ToBase64String(paket.Iv)); } } if (tabKontrola.SelectedIndex == 0) { dataGridViewPrimljeno.Rows.Clear(); dataGridViewPrimljeno.Refresh(); klijent = new TcpKlijent(); listaPoruka = new ListaPoruka(); listaPoruka.Username = prijavljeniKorisnik.Username; klijent.PosaljiServeru(listaPoruka, "DohvatiPrimljenePoruke"); listaPoruka = (ListaPoruka)klijent.PrimiOdServera(); listaPoruka.Poruke = listaPoruka.Poruke.OrderByDescending(x => x.DatumSlanja).ToList(); for (int i = 0; i < listaPoruka.Poruke.Count; i++) { Poruka poruka = listaPoruka.Poruke[i]; EnkripcijskiPaket paket = listaPoruka.Poruke[i].Paket; dataGridViewPrimljeno.Rows.Add("", poruka, poruka.Posiljatelj, poruka.Primatelj, poruka.DatumSlanja, paket.EnkriptiraniKljuc, paket.EnkriptiraniPodaci, Convert.ToBase64String(paket.Iv)); } } }
/// <summary> /// Konstuktor FormePregled koji inicijalizira formu, oblikuje gridview te odmah dohvaća primljenje poruke korisnika s obzirom /// da je tab aktivan prilikom inicijalizacije forme /// </summary> /// <param name="forma"></param> /// <param name="korisnik"></param> public FormaPregled(Form1 forma, Korisnik korisnik) { InitializeComponent(); Dizajner.FormaBezOkna(this); glavnaForma = forma; prijavljeniKorisnik = korisnik; FormirajDataGridove(); klijent = new TcpKlijent(); listaPoruka = new ListaPoruka(); listaPoruka.Username = prijavljeniKorisnik.Username; klijent.PosaljiServeru(listaPoruka, "DohvatiPrimljenePoruke"); listaPoruka = (ListaPoruka)klijent.PrimiOdServera(); listaPoruka.Poruke = listaPoruka.Poruke.OrderByDescending(x => x.DatumSlanja).ToList(); for (int i = 0; i < listaPoruka.Poruke.Count; i++) { Poruka poruka = listaPoruka.Poruke[i]; EnkripcijskiPaket paket = listaPoruka.Poruke[i].Paket; dataGridViewPrimljeno.Rows.Add("", poruka, poruka.Posiljatelj, poruka.Primatelj, poruka.DatumSlanja, paket.EnkriptiraniKljuc, paket.EnkriptiraniPodaci, Convert.ToBase64String(paket.Iv)); } }
/// <summary> /// Event Handler koji se aktivira kada se klikne na gumb Pošalji, tj. kada se posalje adminska poruka na server /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void gumbPosalji_Click(object sender, EventArgs e) { mail = new AdminMail(); mail.Sadrzaj = unosPoruka.Text; try { klijent = new TcpKlijent(); klijent.PosaljiServeru(mail, "AdminMail"); mail = (AdminMail)klijent.PrimiOdServera(); if (mail.Status == 1) { prikazLog.Text += "Vrijeme: " + DateTime.Now + " -> Poruka poslana!" + Environment.NewLine; } else { prikazLog.Text += "Vrijeme: " + DateTime.Now + " -> Poruka nije poslana. Pokušajte kasnije!" + Environment.NewLine; } } catch { return; } }