/// <summary> /// Metoda koja se poziva prilikom klika na gumb "Spremi promjene". /// Ako se zaporke podudaraju i ako polja nisu prazna, zaporka se ažurira /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnSpremiPromjene_Click(object sender, EventArgs e) { string poruka = ""; try { if (pZaporke.BackColor == Color.Green && !string.IsNullOrWhiteSpace(tbNovaZaporka.Text)) { using (var db = new Entities(Konstante.GetConnectionString())) { var trenutniKorisnik = db.korisnik.Where(x => x.korisnicko_ime.Equals(korisnickoIme)).Single(); db.korisnik.Attach(trenutniKorisnik); // ako polje za unos zaporke nije prazno, prije pohrane korisnika, enkriptiraj zaporku if (!string.IsNullOrWhiteSpace(tbNovaZaporka.Text)) { trenutniKorisnik.zaporka = Enkripcija.Enkriptiranje(tbNovaZaporka.Text, Konstante.EnkripcijskiKljuc); } else { trenutniKorisnik.zaporka = tbNovaZaporka.Text; } db.SaveChanges(); } } else { poruka = "passwords don't match!"; } } catch (Exception) { poruka = "Error occurred during password update. Please check your internet connection!"; } finally { if (!string.IsNullOrWhiteSpace(poruka)) { MessageBox.Show(poruka); } else { MessageBox.Show("Password updated!", "Notification", MessageBoxButtons.OK); Close(); } } }
/// <summary> /// Metoda koja se poziva prilikom klika na gumb "Ulogiraj se". Izvode /// se provjere korisničkog imena i zaporke te se pokreće glavna forma /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnUlogirajSe_Click(object sender, EventArgs e) { // u slučaju da nije uneseno korisničko ime ili zaporka, // pojavljuje se label koji sugerira da su ta polja obavezna if (string.IsNullOrWhiteSpace(tbKorIme.Text)) { lblUnesiKorIme.Visible = true; } if (string.IsNullOrWhiteSpace(tbZaporka.Text)) { lblUnesiZaporku.Visible = true; } if (!string.IsNullOrWhiteSpace(tbKorIme.Text) && !string.IsNullOrWhiteSpace(tbZaporka.Text)) { bool uspjesanLogin = false; using (var db = new Entities(Konstante.GetConnectionString())) { bool korisnik = db.korisnik.Where(x => x.korisnicko_ime.Equals(tbKorIme.Text)).Any(); if (!korisnik) { MessageBox.Show("Invalid user name/password!", "Remark", MessageBoxButtons.OK); } else { // dohvaćamo lozinku iz baze za korisničko ime koje smo proslijedili te ako je lozinka "blank" // pokrećemo formu za postavljanje lozinke. Inače, provjeravamo da li je unos lozinke dobar i pokrećemo glavnu formu var lozinka = db.korisnik.Where(x => x.korisnicko_ime.Equals(tbKorIme.Text)).Select(x => x.zaporka).FirstOrDefault(); var omogucen = db.korisnik.Where(x => x.korisnicko_ime.Equals(tbKorIme.Text)).Select(x => x.omogucen).FirstOrDefault(); if (omogucen.Equals("N")) { MessageBox.Show("The user you are trying to log in with is currently disabled. Please contact your administrator", "Warning"); } else if (string.IsNullOrWhiteSpace(lozinka)) { if (MessageBox.Show("The password of the current user has expired and needs to be changed!", "Remark", MessageBoxButtons.OKCancel) == DialogResult.OK) { FrmPromjenaZaporke forma = new FrmPromjenaZaporke(tbKorIme.Text); forma.ShowDialog(); } else { return; } } else { string enkriptiranaLozinka = Enkripcija.Enkriptiranje(tbZaporka.Text, Konstante.EnkripcijskiKljuc); uspjesanLogin = db.korisnik.Where(x => x.korisnicko_ime.Equals(tbKorIme.Text) && x.zaporka.Equals(enkriptiranaLozinka)).Any(); if (!uspjesanLogin) { MessageBox.Show("Invalid user name/password!", "Remark", MessageBoxButtons.OK); } else { FrmMain glavnaForma = new FrmMain(this, tbKorIme.Text); glavnaForma.Show(); Hide(); } } } } } }
/// <summary> /// Metoda koja se poziva prilikom klika na gumb "Spremi promjene" /// korisnik se ažurira/novi korisnik se pohranjuje u bazu /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnSpremiPromjene_Click(object sender, EventArgs e) { // varijabla koja se koristi u slučaju greške (sadržava poruku koja će se prikazati) string poruka = ""; // kod se nalazi unutar try-catch-finally bloka kako bi uspješno detektirali greške kao što su CONSTRAINT Violation try { using (var db = new Entities(Konstante.GetConnectionString())) { if (korisnik == null) { korisnik noviKorisnik = new korisnik() { korisnicko_ime = tbKorisnickoIme.Text, ime = tbIme.Text, prezime = tbPrezime.Text, datum_rodjenja = dtpDatumRodjenja.Value, datum_registracije = DateTime.Now, adresa = tbAdresa.Text, telefon = tbTelefon.Text, ID_tip_korisnika = int.Parse(cbTipKorisnika.SelectedValue.ToString()), omogucen = cbOmogucen.SelectedItem.ToString() }; // ako polje za unos zaporke nije prazno, prije pohrane korisnika, enkriptiraj zaporku if (!string.IsNullOrWhiteSpace(tbNovaZaporka.Text)) { noviKorisnik.zaporka = Enkripcija.Enkriptiranje(tbNovaZaporka.Text, Konstante.EnkripcijskiKljuc); } else { noviKorisnik.zaporka = tbNovaZaporka.Text; } if (!ProvjeriVrijednosti(noviKorisnik) && pZaporke.BackColor == Color.Green) { db.korisnik.Add(noviKorisnik); db.SaveChanges(); } else { poruka = "Make sure all required fields are populated and passwords match!"; } } else { db.korisnik.Attach(korisnik); korisnik.korisnicko_ime = tbKorisnickoIme.Text; korisnik.ime = tbIme.Text; korisnik.prezime = tbPrezime.Text; korisnik.datum_rodjenja = dtpDatumRodjenja.Value; korisnik.adresa = tbAdresa.Text; korisnik.telefon = tbTelefon.Text; korisnik.ID_tip_korisnika = int.Parse(cbTipKorisnika.SelectedValue.ToString()); korisnik.omogucen = cbOmogucen.SelectedItem.ToString(); // ako polje za unos zaporke nije prazno, prije pohrane korisnika, enkriptiraj zaporku if (!string.IsNullOrWhiteSpace(tbNovaZaporka.Text)) { korisnik.zaporka = Enkripcija.Enkriptiranje(tbNovaZaporka.Text, Konstante.EnkripcijskiKljuc); } else { korisnik.zaporka = tbNovaZaporka.Text; } if (!ProvjeriVrijednosti(korisnik) && pZaporke.BackColor == Color.Green) { db.SaveChanges(); } else { poruka = "Make sure all required fields are populated and passwords match!"; } } } } catch (Exception) { poruka = "Error occurred while saving user (does this user already exist?)"; } finally { if (!string.IsNullOrWhiteSpace(poruka)) { MessageBox.Show(poruka); } else { Close(); } } }