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); }
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()); }