Files
Console-Login/App1/LogIn.cs
2022-12-20 15:28:49 +00:00

258 lines
8.4 KiB
C#

using System;
using System.IO;
using System.Security;
using System.Text;
namespace App1 {
class LogIn {
public void start() {
Console.Clear();
Console.WriteLine("Would you like to (L)ogin or (S)ign up?"); //login / signup chooser
var response = Console.ReadKey();
switch (response.KeyChar) {
case 'L':
case 'l':
login();
break;
case 'S':
case 's':
signup();
break;
}
start();
}
public void signup() {
var Encrypt = new encryption();
var rw = new ReadAndWrite();
Console.Clear();
string username = enterUsername(); //calls enterusernmae - username is returned
string email = enterEmail(); //calls enteremail - email is returned
int age = enterAge(); //calls enterage - age is returned
Console.Write("Password: ");
string password = getPassword();
Random rnd = new Random();
int recoverycode = rnd.Next(100000000, 999999999); // picks recovery code
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("Your recovery code is {0}, if you have " +
"forgoten your password you can use this to retreive your " +
"password.", recoverycode);
bool admin = false;
if (username == "Plane000_BEN") // sets admin for specified username
{
admin = true;
}
rw.write(username, email, age, password, recoverycode, admin);
Console.WriteLine();
Console.WriteLine("SignUp Succesfull, enter to continue");
Console.ReadKey();
start();
}
public void login() {
var Encrypt = new encryption();
var rw = new ReadAndWrite();
Console.Clear();
string username = null;
bool findfile = false;
while (findfile == false) {
Console.Write("Username:");
username = Console.ReadLine();
if (File.Exists(username + ".asd")) {
break;
} else {
Console.WriteLine("The user you have entered does not exist");
Console.WriteLine("Press enter to try again and S to signup");
var response = Console.ReadKey();
switch (response.KeyChar) {
case 'S':
case 's':
signup();
break;
}
}
}
string encryptedpassword = rw.readEncryptedPassword(username);
bool passwordcorrect = false;
while (!passwordcorrect) {
Console.Write("Password:");
string enteredpassword = Encrypt.Encrypt(getPassword());
if (enteredpassword == encryptedpassword) {
LoginSuccess(username);
return;
} else {
Console.WriteLine();
Console.WriteLine("The password you have entered is incorrect " +
"press enter to try again and L to log in with a " +
"different user");
Console.WriteLine("If you have forgotten your password press " +
"R to recover your account");
var response = Console.ReadKey();
switch (response.KeyChar) {
case 'L':
case 'l':
login();
break;
case 'R':
case 'r':
AccountRecovery(username);
break;
}
}
}
return;
}
public void LoginSuccess(string username) {
var i = new LoggedIn();
i.loggedIn(username);
}
private void AccountRecovery(string username) {
var Encrypt = new encryption();
var rw = new ReadAndWrite();
Console.Clear();
string encryptedpassword = rw.readEncryptedPassword(username);
string encryptedrecovery = rw.readEncryptedRecovery(username);
bool recoverycorrect = false;
while (!recoverycorrect) {
Console.Write("Please enter the recovery code given to you at account " +
"creation: ");
string recovery = Encrypt.Encrypt(Console.ReadLine());
if (recovery == encryptedrecovery) {
Console.WriteLine("Your password is {0}", Encrypt.Decrypt(encryptedpassword));
Console.WriteLine("Press enter to return");
Console.ReadKey();
return;
} else {
Console.WriteLine("Your recovery code was incorrect");
Console.WriteLine("Press enter to try again or S to signup");
var response = Console.ReadKey();
switch (response.KeyChar) {
case 'S':
case 's':
signup();
break;
}
}
}
return;
}
private string enterUsername() {
bool usernamecorrect = false;
string username = null;
while (!usernamecorrect) {
Console.Write("Username: ");
username = Console.ReadLine();
if (username.Contains(" ")) {
Console.WriteLine("That username is not valid");
} else if (username == "") {
Console.WriteLine("That username is not valid");
} else if (File.Exists(username + ".asd")) {
Console.WriteLine("That account is taken");
} else {
usernamecorrect = true;
break;
}
}
return username;
}
public int enterAge() {
bool agepassed = false;
int age = 0;
while (!agepassed) {
Console.Write("Age: ");
string ReadLine = Console.ReadLine();
try {
age = int.Parse(ReadLine);
break;
} catch (FormatException) {
Console.WriteLine("{0} is not an number", ReadLine);
} catch (OverflowException) {
Console.WriteLine("Thats not your age");
}
}
return age;
}
public string enterEmail() {
bool checkemail = false;
string email = null;
while (checkemail == false) {
Console.Write("Email: ");
email = Console.ReadLine();
checkemail = checkEmail(email);
if (checkemail) {
break;
} else {
Console.WriteLine("The email you entered is not valid");
}
}
return email;
}
public bool checkEmail(string email) {
bool passed = false;
if (email.Contains("@") && email.Contains(".")) {
passed = true;
} else {
passed = false;
}
return passed;
}
public string getPassword() {
var pwd = new SecureString();
while (true) {
ConsoleKeyInfo i = Console.ReadKey(true);
if (i.Key == ConsoleKey.Enter) {
break;
} else if (i.Key == ConsoleKey.Backspace) {
if (pwd.Length > 0) {
pwd.RemoveAt(pwd.Length - 1);
Console.Write("\b \b");
}
} else {
pwd.AppendChar(i.KeyChar);
Console.Write("*");
}
}
string password = new System.Net.NetworkCredential(string.Empty, pwd).Password;
return Convert.ToString(password);
}
}
}