Plan zajęć cz. 10 – Poświadczenia użytkownika

Napotykając problemy z aplikacją mobilną, postanowiłem ukończyć pierw aplikację desktopową. W tym tygodniu skupiłem się głównie na przechowywaniu poświadczeń użytkownika w celu ich późniejszego odczytania.

Poświadczenia użytkownika

System Windows posiada API, do którego można się odwołać w celu dodania nowych poświadczeń z poziomu kodu. W celu komunikacji z tym API zmodyfikowałem rozwiązanie podane przez meziantou na StackOverflow [https://stackoverflow.com/a/22435672]. Niestety jego wersja przesyła hasło w postaci stringu, co nie jest według mnie najlepszym rozwiązaniem. Zmodyfikowałem wszystkie metody tak, aby współpracowały z klasą SecureString. Dzięki temu hasło od momentu wprowadzenia w PasswordBox do momentu zapisu do Centrum poświadczeń znajduje się cały czas poza obszarem pamięci zarządzanej.

Automatyczne logowanie

Użytkownik posiada teraz opcję na zapisanie swoich poświadczeń, jak i ich usunięcie. W tym celu musiałem zmodyfikować całkowicie logikę aplikacji. Obecne zostały wydzielone widoczne warstwy logiki biznesowej oraz komunikacji z siecią. Jeżeli użytkownik wyrazi chęć zapisania jego poświadczeń, to po prawidłowym zalogowaniu zostaną one zapisane w centrum poświadczeń Windows. Natomiast kiedy użytkownik naciśnie przycisk “wyloguj” zapisane poświadczenia zostaną usunięte.

Logger

Nadszedł ten czas w aplikacji, że poczułem potrzebę prowadzenia logów aplikacji. Nie potrzebuję jakiś super zaawansowanych gotowych rozwiązań, dlatego napisałem prostą klasę nazywającą się Logger. Klasa ta posiada metodę log, która wyświetla wiadomość na konsoli. Jest to nakładka na metodę klasy Debug, WriteLine(). Poza standardowym wyświetleniem informacji na konsoli dodawane są informacje pomocnicze, o które tak naprawdę chodzi.

Wiadomości można wysłać na kilku poziomach. Każdy poziom posiada inne oznaczenie w konsoli. Dodatkowo do każdej wiadomości dodawane są informacje o dacie i czasie wyświetlenia wiadomości, nazwy pliku, w którym doszło do wywołania, numer linii, w której wywołano metodę oraz nazwę metody, w której została uruchomiona metoda Log.

Kończąc

Niedługo ukończę uczelnie i istnieje możliwość, że stracę dostęp do konta w systemie. Dlatego postanowiłem jak najszybciej skończyć aplikację desktopową, aby można było z niej już w pełni funkcjonalnie korzystać.

Następnym krokiem ku ukończeniu aplikacji desktopowej będzie zapisywanie ustawień użytkownika, czyli ile dni tygodnia ma być wyświetlane oraz pobranego planu zajęć. Ostatnią funkcjonalnością, jaką chcę na chwilę obecną dodać, będzie automatyczne odświeżanie planu oraz wyświetlanie komunikatów o ewentualnych zmianach w planie.

Cały kod aplikacji można zobaczyć na moim koncie github /kkolodziejczak/ZUTSchedule

Leave a Reply

Translate »