258 lines
8.4 KiB
C#
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);
|
|
}
|
|
}
|
|
} |