示例#1
0
    public static void Main(String[] args)
    {
        string inputPassword;

        char[] encryptedFakeRealPassword =
        { (char)36, (char)61, (char)72, (char)72, (char)75, (char)13, (char)14, (char)15 };
        string         encryptedRealPassword = new string(encryptedFakeRealPassword);
        string         encryptedInputPassword;
        string         usernameInput;
        string         message = "";
        string         filepath;
        int            key         = 65500;
        UserList       users       = new UserList();
        ConsoleKeyInfo auswahl     = new ConsoleKeyInfo();
        bool           passed      = false;
        User           currentUser = null;

        while (auswahl.Key != ConsoleKey.X)
        {
            Console.Clear();
            if (message != "")
            {
                Console.Write(message + "\n");
                message = "";
            }
            if (passed && currentUser != null)
            {
                Console.WriteLine("Eingeloggt als: " + currentUser.Username);
            }
            Console.Write("Was wollen sie tun? \n");
            if (!passed)
            {
                Console.Write("Login (L) \n");
                Console.Write("Registrieren (R) \n");
            }
            else
            {
                Console.Write("Ausloggen (L) \n");
                Console.Write("Nutzer kopieren (C) \n");
            }
            Console.Write("Nutzer auflisten (i) \n");
            Console.Write("Nutzerliste Exportieren (E) \n");
            Console.Write("Nutzerliste aus Datei Importieren (F) \n");
            Console.Write("User löschen (D) \n");
            Console.Write("Verlassen (X) \n");

            auswahl = Console.ReadKey();
            switch (auswahl.Key)
            {
            case ConsoleKey.F:
                filepath = GetFilePath();
                UserList tempUsers = UserList.importFromFile(filepath);
                if (tempUsers != null)
                {
                    HandleImportedUsers(tempUsers, users);
                }
                else
                {
                    message = "Fehler beim importieren aus Datei bitte Dateipfad überprüfen!";
                }
                break;

            case ConsoleKey.E:
                filepath = GetFilePath();
                users.saveToFile(filepath);
                message = "Saved To File!";
                break;

            case ConsoleKey.C:
                if (passed)
                {
                    Console.Write("\n Nutzer zum kopieren auswählen \n");
                    Console.Write(users.GetUserList());
                    int index = GetNumber();
                    Console.Write("byte Array Length: " + users.FindByIndex(index).SerialisiereBinaer().Length + "\n");
                    User habib = User.DeserialisiereBinär(users.FindByIndex(index).SerialisiereBinaer());
                    users.AddUser(habib);
                    message = "Nutzer: " + habib.Username + " erfolgreich kopiert!";
                }
                break;

            case ConsoleKey.L:
                if (!passed)
                {
                    while (!passed)
                    {
                        Console.Write("\nEinloggen!");
                        Console.Write("\nUsername: "******"Passwort: ");
                        inputPassword = Console.ReadLine();
                        // Eingelesenes Passwort durch Aufruf der Funktion Encrypt verschlüsseln:
                        encryptedInputPassword = Encrypt(inputPassword, key);

                        // Überprüfen ob Login Daten übereinstimmen:
                        Console.Write(users.GetUserList());
                        User existingUser = users.FindUser(new User(usernameInput, encryptedInputPassword));

                        if (existingUser != null)
                        {
                            currentUser = existingUser;
                            passed      = true;
                        }

                        if (passed)
                        {
                            inputPassword = null;
                        }
                        else
                        {
                            Console.Write("\nUsername oder Passwort Falsch! Wiederholen? Y/n \n");
                            auswahl = Console.ReadKey();
                            if (auswahl.Key == ConsoleKey.N)
                            {
                                break;
                            }
                        }
                    }
                }
                else
                {
                    currentUser = null;
                    passed      = false;
                }
                break;

            case ConsoleKey.R:
                if (!passed)
                {
                    Console.Write("\nRegistrieren!");
                    Console.Write("\nUsername: "******"Passwort: ");
                    inputPassword = Console.ReadLine();
                    // Eingelesenes Passwort durch Aufruf der Funktion Encrypt verschlüsseln:
                    encryptedInputPassword = Encrypt(inputPassword, key);

                    User newUser = new User(usernameInput, encryptedInputPassword);
                    users.AddUser(newUser);
                    currentUser = newUser;
                    passed      = true;
                }
                break;

            case ConsoleKey.D:
                if (passed)
                {
                    Console.Write("Passwort eingeben um Löschen des Users zu bestätigen: ");
                    inputPassword = Console.ReadLine();
                    // Eingelesenes Passwort durch Aufruf der Funktion Encrypt verschlüsseln:
                    encryptedInputPassword = Encrypt(inputPassword, key);
                    if (currentUser.Password == encryptedInputPassword)
                    {
                        users.DeleteUser(currentUser);
                        currentUser = null;
                        passed      = false;
                    }
                }
                break;

            case ConsoleKey.I:
                Console.Write("\nCurrent Users: \n");
                Console.Write(users.GetUserList());
                Console.ReadKey();
                break;
            }
        }
    }