public ActionResult LogoutCallback(string returnUrl) { //Cập nhật trường IsLogin trong bảng Userclient var clientDa = new ClientDA(); var domain = GetDomain(returnUrl); var client = clientDa.GetByDomain(domain); if (client != null) { if (User != null) { var userClientDa = new UserClientDA(); var userClient = userClientDa.GetListByUsernameAndClientId(User.Account, client.Id); if (userClient != null) { userClient.IsLogin = false; userClientDa.Update(userClient); } } } if (string.IsNullOrEmpty(returnUrl)) { Uri myReferrer = Request.UrlReferrer; string actual = myReferrer.ToString(); return(Redirect(actual)); } else { return(Redirect("/account/logincallback?returnUrl=" + returnUrl)); } }
public ActionResult LoginCallback(string returnUrl) { SystemUserLoginItemExtend item = new SystemUserLoginItemExtend() { Remember = true, ReturnUrl = returnUrl, Provider = GetDomain(returnUrl) }; if (User != null) { SystemUserLoginItem user = new SystemUserLoginItem(); user.UserName = User.Account; user.Provider = GetDomain(returnUrl); #region Xử lý nếu User đã đăng xuất tại client var clientDA = new ClientDA(); var client = clientDA.GetByDomain(user.Provider); //lấy ra client mà user đang sử dụng if (client != null) { var userClientDa = new UserClientDA(); var userClient = userClientDa.GetListByUsernameAndClientId(User.Account, client.Id); if (userClient != null) //check nếu user có account của client đấy không { if (userClient.IsLogin == false) { ViewBag.ReturnUrl = returnUrl; return(View(item)); } } else { return(Redirect(returnUrl)); } } #endregion if (!string.IsNullOrEmpty(returnUrl)) { return(Redirect(string.Format("{0}{1}{2}", returnUrl, "?data=", HttpUtility.UrlEncode(GetReturnData(user))))); } else { return(Redirect(ConfigurationManager.AppSettings["DefaultReturnUrl"])); } } ViewBag.ReturnUrl = returnUrl; return(View(item)); }
public JsonResult Logincallback(SystemUserLoginItemExtend user) { try { //Nếu như user chưa đăng nhập bất cứ phần mềm nào = đã logout tất cả phần mềm và SSO đã bị logout thì bật tất cả các var flag = (User == null);//SSO bị logout if (FormsAuthentication.CookiesSupported) { if (ModelState.IsValid) { if (user.SSOType == "Global") { user.UserName = user.UserName.ToLower(); var error = SystemAuthenticate.Login(user); if (error == SystemCommon.Error.LoginSuccess) { //Check OTP var userInfo = userDA.GetListByUsername(user.UserName).FirstOrDefault(); var secretkey = ConfigurationManager.AppSettings["OTPSecretKey"] + userInfo.OtpPrivateKey; if (!GoogleTOTP.IsVaLid(secretkey, user.OTP)) { objMsg.Error = true; objMsg.Title = getMessageError(SystemCommon.Error.InfoIncorrect); //xóa cookie (check OTP phải xử lý sau khi login, vì login xử lý ở dll,nên nếu OTP ko chính xác thì phải xóa cookie FormsAuthentication.SignOut(); return(Json(objMsg)); } var userClientDA = new UserClientDA(); if (flag) //(*) { var lstUserClient = userClientDA.GetListByUsername(user.UserName); if (lstUserClient.Count(m => m.IsLogin) == 0) { foreach (var item in lstUserClient) { item.IsLogin = true; userClientDA.Update(item); } } } else //(**) { var clientDA = new ClientDA(); var domain = GetDomain(user.ReturnUrl); var client = clientDA.GetByDomain(domain); var userClient = userClientDA.GetListByUsernameAndClientId(user.UserName, client.Id); if (userClient != null) { userClient.IsLogin = true; userClientDA.Update(userClient); } } if (string.IsNullOrEmpty(user.ReturnUrl)) { objMsg.Title = ConfigurationManager.AppSettings["DefaultReturnUrl"]; } else { objMsg.Title = string.Format("{0}{1}{2}", user.ReturnUrl, "?data=", HttpUtility.UrlEncode(GetReturnData(user))); } } else { objMsg.Title = getMessageError(error); objMsg.Error = true; } } else { var url = ConfigurationManager.AppSettings["SSOVN"]; user.SecretKey = Security.CreateKey(); var ssoVNResponse = JsonConvert.DeserializeObject <Message>(HttpUtils.MakePostRequest(url, JsonConvert.SerializeObject(user), "application/json")); objMsg = ssoVNResponse; } } else { objMsg.Error = true; objMsg.Title = string.Join("</br>", ModelState.Keys.SelectMany(k => ModelState[k].Errors).Select(m => m.ErrorMessage)); } } } catch (Exception ex) { objMsg.Error = true; objMsg.Title = ex.Message; } return(Json(objMsg)); }