예제 #1
0
        public static bool zarejestruj_uzytkownika(string login, string imie, string opis)
        {
            klucze nowy_klucz = new klucze();

            nowy_klucz.generuj_klucze();
            string     query        = "INSERT INTO uzytkownicy (login,klucz_publiczny,skrot_klucz_prywatny,imie,opis) VALUES(@login, @klucz_publiczny, @skrot_klucz_prywatny, @imie, @opis);insert into lista_kontaktow values (@login, '<lista_kontaktow></lista_kontaktow>'); insert into lista_zdarzen (login) values (@login)";
            SqlCommand executeQuery = new SqlCommand(query, cnn);

            executeQuery.Parameters.AddWithValue("login", login);
            executeQuery.Parameters.AddWithValue("imie", imie);
            executeQuery.Parameters.AddWithValue("opis", opis);
            executeQuery.Parameters.AddWithValue("klucz_publiczny", nowy_klucz.klucz_publiczny);
            executeQuery.Parameters.AddWithValue("skrot_klucz_prywatny", nowy_klucz.klucz_prywatny.hashuj());
            try
            {
                executeQuery.ExecuteNonQuery();
                klasa_rozszerzen.balloon_tip("", "Zapisz plik przechowujący klucz w bezpiecznym miejscu. Będziesz używać go do logowania.");
                if (nowy_klucz.zapisz_do_pliku(login) == false)
                {
                    usun_konto(login, nowy_klucz);
                    klasa_rozszerzen.balloon_tip("", "Konto nie zostało utworzone (nie zapisano klucza).");
                    return(false);
                }
                else
                {
                    klasa_rozszerzen.balloon_tip("", "Konto zostało utworzone poprawnie. Możesz teraz się zalogować.");
                    return(true);
                }
            }
            catch (Exception ex)
            {
                klasa_rozszerzen.balloon_tip("", "Wystąpił nieoczekiwany błąd! Użytkownik nie został utworzony, spróbuj ponownie." + ex.Message);
                return(false);
            }
        }
예제 #2
0
        public static bool sprawdz_dane(string login, klucze key)
        {
            string     hashKlucza   = key.klucz_prywatny.hashuj();
            string     queryResult  = null;
            string     query        = "select skrot_klucz_prywatny from uzytkownicy where login = @login";
            SqlCommand executeQuery = new SqlCommand(query, cnn);

            executeQuery.Parameters.AddWithValue("login", login);
            try
            {
                queryResult = (string)executeQuery.ExecuteScalar();
                if (!hashKlucza.Equals(queryResult))
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
            catch (Exception ex)
            {
                klasa_rozszerzen.balloon_tip("", "Wystąpił nieoczekiwany błąd! Spróbuj ponownie.\n" + ex.Message);
                return(false);
            }
        }
예제 #3
0
        public Logowanie()
        {
            InitializeComponent();

            label.ToolTip  = "np. Guziec94";
            label1.ToolTip = "Klucz prywatny przypisany do konta";
            _login         = null;
            _klucz         = new klucze();

            baza_danych.polacz_z_baza();
        }
예제 #4
0
        public PanelGlowny()
        {
            InitializeComponent();

            // POBIERAMY DANE KONTA ZE STRONY LOGOWANIA
            _login = Logowanie._login;
            _klucz = Logowanie._klucz;

            // ZMIENIAMY TYTUL NA BELCE GORNEJ APLIKACJI UWZGLEDNIAJAC LOGIN ZALOGOWANEGO UZYTKOWNIKA
            Application.Current.MainWindow.Title = "GuziecSIM - " + _login;

            // DO LISTY KONTAKTOW I WIADOMOSCI DODAJEMY STYLE DZIEKI KTORYM ICH ZAWARTOSC NIE BEDZIE PODSWIETLANA PO NAJECHANIU
            okno.Style     = (Style)Application.Current.Resources["listboxBezPodswietlen"];
            kontakty.Style = (Style)Application.Current.Resources["listboxBezPodswietlen"];

            // DO PRZYCISKOW DODANYCH STATYCZNIE DODAJEMY STYLE
            button1_Copy2.Style = (Style)Application.Current.Resources["ladnyPrzyciskStyle"];
            button1.Style       = (Style)Application.Current.Resources["ladnyPrzyciskStyle"];

            // UMOZLIWIAMY BY POLE TEKSTOWE NA NOWA WIADOMOSC MOGLO PRZECHOWYWAC TEKST WIELOLINIOWY
            textBox.TextWrapping  = TextWrapping.Wrap;
            textBox.AcceptsReturn = true;

            // DEFINIUJEMY WSZYSTKIE MOZLIWE NA TE CHWILE PODPOWIEDZI (DLA STATYCZNIE UTWORZONYCH KONTROLEK)
            button1_Copy.ToolTip  = "Zminimalizuj konwersację";
            button1_Copy1.ToolTip = "Zamknij konwersację";
            btnWyl.ToolTip        = "Wyloguj się";
            btnUsuw.ToolTip       = "Usuń konto";
            btnDod.ToolTip        = "Dodaj kontakt";

            baza_danych.powiadomOStatusieDodawania(_login);
            baza_danych.czyKtosChceDodacDoListy(_login);

            // JEZELI UZYTKOWNIK POSIADA JAKICHS ZNAJOMYCH (POBRANA LISTA NIE JEST PUSTA) WYSWIETLAMY ICH
            pokazListeKontaktow();

            baza_danych.rozglos_logowanie();

            // ROZPOCZYNAMY RAPORTOWANIE BAZY DANYCH O WPROWADZONYCH W NIEJ ZMIANACH
            baza_danych.broker();
            wczytaj_wiadomosci();
            if (archiwum.Count > 0)
            {
                System.Media.SystemSounds.Beep.Play();
            }
            okno.Dispatcher.Invoke(new Action(() => okno.Items.Clear()), System.Windows.Threading.DispatcherPriority.Normal);
        }
예제 #5
0
        /* [WYBRANO OPCJĘ USUWANIA KONTA] */
        private void btnUsuw_Click(object sender, RoutedEventArgs e)
        {
            if (MessageBox.Show("Czy na pewno chcesz usunąć swoje konto? Ta operacja jest nieodwracalna. Operację należy potwierdzić kluczem.", "Usuwanie konta - " + _login, MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
            {
                // W CELU USUNIECIA KONTA MUSIMY POTWIERDZIC CHEC TEJ OPERACJI PODAJAC KLUCZ PRYWATNY DO KONTA
                klucze temp = new klucze();
                temp.zaladuj_z_pliku();

                if (temp.klucz_prywatny != null)
                {
                    // SPRAWDZAMY CZY PODANY KLUCZ PRYWATNY JEST POPRAWNY
                    if (baza_danych.sprawdz_dane(_login, temp))
                    {
                        // USUWAMY KONTO Z BAZY DANYCH
                        baza_danych.usun_konto(_login, _klucz);

                        // USUWAMY KONTAKT Z LIST KONTAKTÓW ZAZNAJOMIONYCH UŻYTKOWNIKÓW
                        foreach (var kontakt in lista)
                        {
                            List <Uzytkownik> lista_usuwanego = new List <Uzytkownik>();
                            lista_usuwanego = baza_danych.pobierz_liste_kontaktow(kontakt.login);
                            if (lista_usuwanego != null)
                            {
                                lista_usuwanego.Remove(lista_usuwanego.Find(x => x.login == _login));
                                baza_danych.lista_kontaktow_do_xml(lista_usuwanego, kontakt.login, true);
                            }
                        }

                        // ZMIENIAMY SPOWROTEM TYTUL BELKI GORNEJ APLIKACJI NIE UWZGLEDNIAJAC TYM RAZEM ZADNEGO LOGINU
                        Application.Current.MainWindow.Title = "GuziecSIM";

                        // PRZEKIEROWUJEMY UZYTKOWNIKA SPOWROTEM NA STORNE LOGOWANIA
                        baza_danych.broker_stop();
                        Logowanie         logowanie = new Logowanie();
                        NavigationService nav       = NavigationService.GetNavigationService(this);
                        nav.Navigate(logowanie);
                    }
                    else
                    {
                        klasa_rozszerzen.balloon_tip("", "Podano niepoprawny klucz, konto nie zostało usunięte.");
                    }
                }
            }
        }
예제 #6
0
        public static List <Wiadomosc> sprawdzWiadomosci(string login, klucze klucz_odbierajacego)
        {
            List <Wiadomosc> wiadomosci   = new List <Wiadomosc>();
            string           query        = "select login_wysylajacego, tresc, czas_wyslania from wiadomosci where login_odbiorcy = @login";
            SqlCommand       executeQuery = new SqlCommand(query, cnn);

            executeQuery.Parameters.AddWithValue("login", login);
            using (executeQuery)
            {
                try
                {
                    using (SqlDataReader readerQuery = executeQuery.ExecuteReader())
                    {
                        while (readerQuery.Read())
                        {
                            var czas = DateTime.Now;
                            wiadomosci.Add(new Wiadomosc(readerQuery.GetString(0), login, readerQuery.GetDateTime(2), readerQuery.GetString(1).deszyfruj(klucz_odbierajacego.klucz_prywatny)));
                        }
                        readerQuery.Close();
                        if (wiadomosci.Count > 0)
                        {
                            return(wiadomosci);
                        }
                        else
                        {
                            return(null);
                        }
                    }
                }
                catch (Exception ex)
                {
                    klasa_rozszerzen.balloon_tip("", "Wystąpił nieoczekiwany błąd!\n" + ex.Message);
                    return(null);
                }
            }
        }
예제 #7
0
 public static bool usun_konto(string login, klucze klucz)
 {
     if (sprawdz_dane(login, klucz))
     {
         try
         {
             string     query        = "delete from uzytkownicy where login = @login;delete from lista_kontaktow where login=@login;delete from wiadomosci where login_odbiorcy = @login or login_wysylajacego = @login; delete from lista_zdarzen where login = @login;";
             SqlCommand executeQuery = new SqlCommand(query, cnn);
             executeQuery.Parameters.AddWithValue("login", login);
             executeQuery.ExecuteNonQuery();
             ustaw_status(login, false);
             return(true);
         }
         catch (Exception ex)
         {
             klasa_rozszerzen.balloon_tip("", "Wystąpił nieoczekiwany błąd! Spróbuj ponownie.\n" + ex.Message);
             return(false);
         }
     }
     else
     {
         return(false);
     }
 }