public void UpdateIpAttempt(IpAttempt old, IpAttempt updated)
 {
     old.Ip_Address = updated.Ip_Address;
     old.Time       = updated.Time;
     old.Blocked    = updated.Blocked;
     Entity.SaveChanges();
 }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
            }
        }
 public void DeleteIpAttempt(IpAttempt i)
 {
     Entity.IpAttempts.Remove(i);
     Entity.SaveChanges();
 }
 public void AddIpAttempt(IpAttempt i)
 {
     Entity.IpAttempts.Add(i);
     Entity.SaveChanges();
 }