//Po wylogowaniu zostaje przypisany anonimowy użytkownik oraz powiadomione wszystkie funkcjie o zmianie użytkownika.
        private void Logout(object parameter)
        {
            CustomPrincipal customPrincipal = Thread.CurrentPrincipal as CustomPrincipal;

            if (customPrincipal != null)
            {
                customPrincipal.Identity = new AnonymousIdentity();
                NotifyPropertyChanged("AuthenticatedUser");
                NotifyPropertyChanged("AuthenticatedRole");
                NotifyPropertyChanged("IsAuthenticated");
                NotifyPropertyChanged("IsAdmin");
                NotifyPropertyChanged("IsKurier");
                NotifyPropertyChanged("IsKsiegowy");
                _loginCommand.RaiseCanExecuteChanged();
                _logoutCommand.RaiseCanExecuteChanged();
                Status = string.Empty;
            }
        }
        //Obsługa logowania się użytkownika
        private void Login(object parameter)
        {
            PasswordBox passwordBox       = parameter as PasswordBox;
            string      clearTextPassword = passwordBox.Password;

            try
            {
                //Sprawdzanie użytkownika
                User user = _authenticationService.AuthenticateUser(Username, clearTextPassword);

                CustomPrincipal customPrincipal = Thread.CurrentPrincipal as CustomPrincipal;
                if (customPrincipal == null)
                {
                    throw new ArgumentException("The application's default thread principal must be set to a CustomPrincipal object on startup.");
                }

                //Autoryzuj użytkownika
                customPrincipal.Identity = new CustomIdentity(user.Username, user.Email, user.Roles);

                //Powiadomienie o zmianie użytkownika
                NotifyPropertyChanged("AuthenticatedUser");
                NotifyPropertyChanged("AuthenticatedRole");
                NotifyPropertyChanged("IsAuthenticated");
                NotifyPropertyChanged("IsAdmin");
                NotifyPropertyChanged("IsKurier");
                NotifyPropertyChanged("IsKsiegowy");
                _loginCommand.RaiseCanExecuteChanged();
                _logoutCommand.RaiseCanExecuteChanged();
                Username             = string.Empty; //reset
                passwordBox.Password = string.Empty; //reset
                Status = string.Empty;
            }
            catch (UnauthorizedAccessException) //Złapanie wyjątku jeśli login i hasło nie pasują do siebie.
            {
                Status = "Logowanie nie powiodlo się.";
            }
            catch (Exception ex)
            {
                Status = string.Format("ERROR: {0}", ex.Message);
            }
        }