public int RemainingBlocked(string username) { LoginAttemptsRepository loginAttempts = new LoginAttemptsRepository(); string userIp = loginAttempts.GetIP(); TimeSpan elapsedUsername = TimeSpan.Zero; TimeSpan elapsedIp = TimeSpan.Zero; TimeSpan result = TimeSpan.Zero; if (loginAttempts.DoesUsernameAttemptExist(username) == true) { LoginAttempt l = loginAttempts.GetUsernameAttempt(username); elapsedUsername = DateTime.Now.Subtract((DateTime)l.Time); } if (loginAttempts.DoesIpAttemptExist(userIp) == true) { IpAttempt i = loginAttempts.GetIpAttempt(userIp); elapsedIp = DateTime.Now.Subtract((DateTime)i.Time); } if ((elapsedUsername > TimeSpan.Zero) && (elapsedIp == TimeSpan.Zero)) { result = elapsedUsername; } else if ((elapsedIp > TimeSpan.Zero) && (elapsedUsername == TimeSpan.Zero)) { result = elapsedIp; } else { int compare = TimeSpan.Compare(elapsedUsername, elapsedIp); switch (compare) { case -1: result = elapsedUsername; break; case 0: result = elapsedUsername; break; case 1: result = elapsedUsername; break; } } return(15 - (int)result.TotalMinutes); }
public bool IsBlocked(string username) { LoginAttemptsRepository loginAttempts = new LoginAttemptsRepository(); string userIp = loginAttempts.GetIP(); bool usernameBlocked = false; bool ipBlocked = false; if (loginAttempts.DoesUsernameAttemptExist(username) == true) { LoginAttempt l = loginAttempts.GetUsernameAttempt(username); if ((bool)l.Blocked) { TimeSpan elapsed = DateTime.Now.Subtract((DateTime)l.Time); usernameBlocked = (elapsed.Minutes >= 15) ? false : true; if (usernameBlocked == false) { loginAttempts.DeleteUsernameAttempt(l); } } } if (loginAttempts.DoesIpAttemptExist(userIp) == true) { IpAttempt i = loginAttempts.GetIpAttempt(userIp); if ((bool)i.Blocked) { TimeSpan elapsed = DateTime.Now.Subtract((DateTime)i.Time); ipBlocked = (elapsed.Minutes >= 15) ? false : true; if (ipBlocked == false) { loginAttempts.DeleteIpAttempt(i); } } } return(usernameBlocked || ipBlocked); }
public bool Login(string username, string password) { //return new UsersRepository().Login(username, new Encryption().HashString(password)); LoginAttemptsRepository loginAttempts = new LoginAttemptsRepository(); bool validLogin = new UsersRepository().Login(username, new Encryption().HashString(password)); if (validLogin == true) { return(validLogin); } else { string userIp = loginAttempts.GetIP(); if (loginAttempts.DoesUsernameAttemptExist(username) == false) { LoginAttempt l = new LoginAttempt { Username = username, Attempt = 1, Time = DateTime.Now, Blocked = false, }; loginAttempts.AddUsernameAttempt(l); } else { LoginAttempt oldusername; if (loginAttempts.DoesUsernameAttemptExist(username) == true) { oldusername = loginAttempts.GetUsernameAttempt(username); bool usernameBlockCheck = (oldusername.Attempt >= 2) ? true : false; LoginAttempt updateUsername = new LoginAttempt { Username = username, Attempt = oldusername.Attempt++, Time = oldusername.Time, Blocked = usernameBlockCheck, }; loginAttempts.UpdateUsernameAttempt(oldusername, updateUsername); } } if (loginAttempts.DoesIpAttemptExist(userIp) == false) { IpAttempt i = new IpAttempt { Attempt = 1, Time = DateTime.Now, Blocked = false, Ip_Address = userIp }; loginAttempts.AddIpAttempt(i); } else { IpAttempt oldIp; if (loginAttempts.DoesIpAttemptExist(userIp) == true) { oldIp = loginAttempts.GetIpAttempt(userIp); bool ipBlockCheck = (oldIp.Attempt >= 2) ? true : false; IpAttempt updateIp = new IpAttempt { Ip_Address = userIp, Attempt = oldIp.Attempt++, Time = oldIp.Time, Blocked = ipBlockCheck, }; loginAttempts.UpdateIpAttempt(oldIp, updateIp); } } return(validLogin); } }