Beispiel #1
0
        public ActionResult <VerificationStruct> Login(string login, string password)
        {
            var user = new UserStruct()
            {
                Login    = login,
                Password = new PasswordStruct()
                {
                    Password = password
                }
            };
            var answer = user.Enter(context);

            if (!answer.Answer && answer.Message["Invalid"].Equals("Password"))
            {
                var wrongenters = user.GetWrongEnters(context);

                var permanentersleft = AppConfigurations.PermanentBanErrors - wrongenters;
                var constentersleft  = AppConfigurations.ConstantBanErrors - wrongenters;
                if (AppConfigurations.PermanentBanErrors - wrongenters == 0)
                {
                    answer.Message.Add("EntersLeft", permanentersleft.ToString());
                    answer.Message["Message"] = answer.Message["Message"] + " User was permanently banned.";
                    user.SetBan(context, true);
                    user.SendPermanentBanEmail(context);
                }
                else if (constentersleft <= 0)
                {
                    answer.Message.Add("EntersLeft", constentersleft.ToString());
                    answer.Message["Message"] = answer.Message["Message"] + " Password was reset.";
                    user.SetBan(context, true);
                    user.SendConstantBanEmail(context);
                }
            }
            if (!answer.Answer && answer.Message["Invalid"].Equals("Locked"))
            {
                user.SendPermanentBanEmail(context);
            }
            if (answer.Answer)
            {
                var session = new SessionStruct()
                {
                    User = user,
                };
                session.SessionNo = session.GetSession(Sessions);
                if (session.SessionNo != 0)
                {
                    Sessions.Remove(session);
                }
                session.SessionNo = session.GenSessionNo();
                Sessions.Add(session);
                answer.Message.Add("SessionNo", session.SessionNo.ToString());
            }
            return(answer);
        }
Beispiel #2
0
        private void Accept()
        {
start:
            var client = _listener.AcceptTcpClient();
            var sess = new SessionStruct(client);

            if (!_session.TryAdd(sess.Key, sess))
            {
                throw new InvalidOperationException("Session.TryAdd");
            }
            TaskHelper.Factory.StartNew(this.OnReceive, sess);
            goto start;
        }
Beispiel #3
0
        public ActionResult <VerificationStruct> ChangePassword(int session, string newpassword)
        {
            var sessionstruct = new SessionStruct()
            {
                SessionNo = session
            };

            sessionstruct.User = sessionstruct.GetUser(Sessions);
            if (sessionstruct.User.Id != 0)
            {
                var password = new PasswordStruct()
                {
                    UserId = sessionstruct.User.Id
                };
                password.GetLastPasswordNotTemporary(context);
                if (password.Password == Cryptography.Encrypt(newpassword))
                {
                    return new VerificationStruct()
                           {
                               Answer  = false,
                               Message = new Dictionary <string, string>()
                               {
                                   ["Message"] = "New password should not be equal to previous."
                               }
                           }
                }
                ;
                password.Password = newpassword;
                password.Save(context);
            }
            return(new VerificationStruct()
            {
                Answer = true,
                Message = new Dictionary <string, string>()
                {
                    ["Message"] = "Password was successfully changed."
                }
            });
        }
    }