Exemplo n.º 1
0
        public HDNHD.Models.DataContexts.Dangnhap CheckLogin(string loginToken, TimeSpan validSpan)
        {
            var validTime = DateTime.Now.Subtract(validSpan);
            var dangNhap  = GetSingle(m => m.Trangthaikhoa != true &&
                                      AuthHelpers.MD5(m.NguoidungID.ToString()) == loginToken &&
                                      m.Thoigiandangnhap > validTime);

            return(dangNhap);
        }
Exemplo n.º 2
0
        public ActionResult Login(string username, string password, string prevUrl)
        {
            var passwordHash = AuthHelpers.CreatePassword(password);
            var count        = nguoiDungRepository.GetAll().Count();

            if (count > 0)
            {
                // get NguoiDung by username
                var nguoiDung = nguoiDungRepository.GetSingle(m => m.Taikhoan == username);

                if (nguoiDung != null)
                {
                    var dangNhap = dangNhapRepository.GetByNguoiDungID(nguoiDung.NguoidungID);
                    // create DangNhap if not exists
                    if (dangNhap == null)
                    {
                        dangNhap = new HDNHD.Models.DataContexts.Dangnhap()
                        {
                            NguoidungID      = nguoiDung.NguoidungID,
                            Solandangnhapsai = 0
                        };
                        dangNhapRepository.Insert(dangNhap);
                    }

                    var encryptedPassword = AuthHelpers.CreatePassword(password);
                    if (nguoiDung.Matkhau == encryptedPassword)
                    { // password matched
                        // check if locked
                        if (dangNhap.Trangthaikhoa == true && dangNhap.Thoigianhethankhoa < DateTime.Now)
                        {
                            // release lock
                            dangNhap.Trangthaikhoa    = false;
                            dangNhap.Solandangnhapsai = 0;
                        }

                        if (dangNhap.Trangthaikhoa != true)
                        {
                            // update Thoigiandangnhap
                            dangNhap.Thoigiandangnhap = DateTime.Now;
                            adminUow.SubmitChanges();

                            // set cookie
                            var cookie = new HttpCookie(Cookies.B_ADMIN_LOGIN_TOKEN, AuthHelpers.MD5(nguoiDung.NguoidungID.ToString()));
                            cookie.Expires = DateTime.Now.AddDays(365);
                            cookie.Path    = "/"; // make cookie available across applications
                            cookie.Domain  = null;
                            Response.Cookies.Add(cookie);

                            // redirect
                            if (prevUrl != null)
                            {
                                Response.Redirect(prevUrl);
                            }
                            else
                            {
                                return(RedirectToAction("Index", "Default", new { area = "" }));
                            }
                        }
                        else
                        {
                            ViewBag.Message = "Tài khoản của bạn đã bị khóa (tới sau ngày " + dangNhap.Thoigianhethankhoa + ") do nhập sai password quá 5 lần. Xin hãy quay lại sau.";
                        }
                    }
                    else
                    { // sai mật khẩu => đếm số lần và khóa
                        dangNhap.Solandangnhapsai++;

                        if (dangNhap.Solandangnhapsai == HDNHDConstants.LOGIN_MAX_FAILS)
                        {
                            dangNhap.Trangthaikhoa      = true;
                            dangNhap.Thoigianhethankhoa = DateTime.Now.AddDays(HDNHDConstants.LOGIN_LOCK_DAYS);
                            ViewBag.Message             = "Tài khoản của bạn đã bị khóa " + HDNHDConstants.LOGIN_LOCK_DAYS + " ngày do nhập sai password quá 5 lần. Xin hãy quay lại sau.";
                        }
                        else
                        {
                            ViewBag.Message = "Tài khoản hoặc mật khẩu chưa đúng. Vui lòng kiểm tra lại";
                        }

                        adminUow.SubmitChanges();
                    }
                }
                else
                {
                    ViewBag.Message = "Tài khoản hoặc mật khẩu chưa đúng. Vui lòng kiểm tra lại.";;
                }
            }
            else
            {
                ViewBag.Message = "Không có thông tin người dùng trong hệ thống";
            }

            return(View());
        }