using System; using System.Collections.Generic; using System.Linq; using System.Transactions; using System.Web; using System.Web.Mvc; using System.Web.Security; using DotNetOpenAuth.AspNet; using Microsoft.Web.WebPages.OAuth; using WebMatrix.WebData; using Bowin.Common; using Bowin.Common.Utility; using EMIS.Utility.SSO; using EMIS.Utility; using EMIS.Web.Filters; using EMIS.Web.Models; using EMIS.Web.Controls; using EMIS.ViewModel; using EMIS.ViewModel.AccountManage; using EMIS.ViewModel.SystemView; using EMIS.CommonLogic.SystemServices; using EMIS.CommonLogic.EnrollManage.NewStudentManage; namespace EMIS.Web.Controllers { [Authorization] public class AccountController : Controller { public IUserServices UserServices { get; set; } public IMailVerifyServices MailVerifyServices { get; set; } public INewStudentEnterServices newStudentEnterServices { get; set; } /// /// /// /// /// [AllowAnonymous] public ActionResult Login(string returnUrl) { ViewBag.ReturnUrl = returnUrl; var model = this.GetUserCookies(); if (model != null) { return View(model); } return View(); } /// /// /// /// /// /// [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult Login(LogOnModel model, string returnUrl) { if (ModelState.IsValid) { try { if (model.VerifyCode != Session["code"] as string) { ModelState.AddModelError("", "请输入正确的验证码!"); return View(model); } bool isLogin; try { isLogin = UserServices.Login(model.UserName, model.Password); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return View(model); } if (isLogin) { try { this.LoginSureccessful(model, model.UserName); var referrer = HttpContext.Request.UrlReferrer; if (referrer != null) { var referrerUrl = HttpContext.Request.UrlReferrer.GetQueryStringByPath("targetUrl"); if (!string.IsNullOrEmpty(referrerUrl)) { return Redirect(HttpContext.Server.UrlDecode(referrerUrl)); } } return RedirectToAction("Index", "Home"); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return View(model); } } else { ModelState.AddModelError("", "用户名或密码不正确请检查后重新输入!"); this.RemoveUserCookies(model); return View(model); } } catch (Exception ex) { //this.RemoveUserCookies(model); //ModelState.AddModelError("", "提供的用户名或密码不正确。"); throw ex; } } return View(model); } /// /// 河北工大 /// /// /// [AllowAnonymous] public ActionResult HBGDLogin(string returnUrl) { ViewBag.ReturnUrl = returnUrl; var model = this.GetUserCookies(); if (model != null) { return View(model); } return View(); } /// /// 河北工大 /// /// /// /// [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult HBGDLogin(LogOnModel model, string returnUrl) { if (ModelState.IsValid) { try { if (model.VerifyCode != Session["code"] as string) { ModelState.AddModelError("", "请输入正确的验证码!"); return View(model); } bool isLogin; try { isLogin = UserServices.Login(model.UserName, model.Password); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return View(model); } if (isLogin) { try { this.LoginSureccessful(model, model.UserName); var referrer = HttpContext.Request.UrlReferrer; if (referrer != null) { var referrerUrl = HttpContext.Request.UrlReferrer.GetQueryStringByPath("targetUrl"); if (!string.IsNullOrEmpty(referrerUrl)) { return Redirect(HttpContext.Server.UrlDecode(referrerUrl)); } } return RedirectToAction("Index", "Home"); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return View(model); } } else { ModelState.AddModelError("", "用户名或密码不正确请检查后重新输入!"); this.RemoveUserCookies(model); return View(model); } } catch (Exception ex) { //this.RemoveUserCookies(model); //ModelState.AddModelError("", "提供的用户名或密码不正确。"); throw ex; } } return View(model); } /// /// 新增的登录页面 /// /// /// [AllowAnonymous] public ActionResult NewLogin(string returnUrl) { ViewBag.ReturnUrl = returnUrl; var model = this.GetUserCookies(); Session["FailCount"] = 0; if (model != null) { return View(model); } return View(); } /// /// 新增的登录页面 /// /// /// [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult NewLogin(LogOnModel model, string returnUrl) { if (ModelState.IsValid) { try { int failCount = (int)Session["FailCount"]; if (model.VerifyCode != "NoCode") { if (model.VerifyCode != Session["code"] as string) { failCount++; Session["FailCount"] = failCount; model.Session = Session; ModelState.AddModelError("", "请输入正确的验证码!"); return View(model); } } bool isLogin; try { isLogin = UserServices.Login(model.UserName, model.Password); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return View(model); } if (isLogin) { try { this.LoginSureccessful(model, model.UserName); var referrer = HttpContext.Request.UrlReferrer; if (referrer != null) { var referrerUrl = HttpContext.Request.UrlReferrer.GetQueryStringByPath("targetUrl"); if (!string.IsNullOrEmpty(referrerUrl)) { return Redirect(HttpContext.Server.UrlDecode(referrerUrl)); } } return RedirectToAction("Index", "Home"); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return View(model); } } else { failCount++; //ViewBag.FailCount = failCount; Session["FailCount"] = failCount; model.Session = Session; //model.FailCount = failCount; ModelState.AddModelError("", "用户名或密码不正确请检查后重新输入!"); //this.RemoveUserCookies(model); return View(model); } } catch (Exception ex) { //this.RemoveUserCookies(model); //ModelState.AddModelError("", "提供的用户名或密码不正确。"); throw ex; } } return View(model); } /// /// /// /// /// [AllowAnonymous] public ActionResult GZZYLogin(string returnUrl) { ViewBag.ReturnUrl = returnUrl; var model = this.GetUserCookies(); if (model != null) { return View(model); } return View(); } /// /// /// /// /// /// [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult GZZYLogin(LogOnModel model, string returnUrl) { if (ModelState.IsValid) { try { if (model.VerifyCode != Session["code"] as string) { ModelState.AddModelError("", "请输入正确的验证码!"); return View(model); } bool isLogin; try { isLogin = UserServices.Login(model.UserName, model.Password); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return View(model); } if (isLogin) { try { this.LoginSureccessful(model, model.UserName); var referrer = HttpContext.Request.UrlReferrer; if (referrer != null) { var referrerUrl = HttpContext.Request.UrlReferrer.GetQueryStringByPath("targetUrl"); if (!string.IsNullOrEmpty(referrerUrl)) { return Redirect(HttpContext.Server.UrlDecode(referrerUrl)); } } return RedirectToAction("Index", "Home"); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return View(model); } } else { ModelState.AddModelError("", "用户名或密码不正确请检查后重新输入!"); this.RemoveUserCookies(model); return View(model); } } catch (Exception ex) { //this.RemoveUserCookies(model); //ModelState.AddModelError("", "提供的用户名或密码不正确。"); throw ex; } } return View(model); } /// /// /// /// [AllowAnonymous] public ActionResult SSOLogin() { try { var loginID = UserServices.SSOLogin(); this.LoginSureccessful(new LogOnModel { UserName = loginID }, loginID); return RedirectToAction("SSOLoginJump", "Account", new { Remote_Login_User = loginID }); //return RedirectToAction("SSOLoginJump", "Account", new { Remote_Login_User = loginID }); } catch (Exception ex) { ViewBag.ErrorMessage = ex.Message; //filterContext.HttpContext.Response.Redirect(FormsAuthentication.LoginUrl); } return View(); } /// /// /// /// [AllowAnonymous] public ActionResult SSOLoginJump() { var loginID = Request["Remote_Login_User"]; Session.Add("Remote_Login_User", loginID); return RedirectToAction("Index", "Home"); } /// /// /// /// [NoSSO] public ActionResult LogOff() { var cookieName = EMIS.Utility.Const.LOCAL_SETTING_LOGIN_COOKIENAME; var logoffUrl = Url.Content(EMIS.Utility.Const.LOCAL_SETTING_LOGOFF_PAGE); HttpCookie cookie = new HttpCookie(cookieName); cookie.Value = ""; cookie.Expires = DateTime.Now.AddDays(-1); Response.Clear(); Response.AppendCookie(cookie); //if (Const.SSO_IS_SSO_LOGIN) //{ // SSO.SSOLogout(); //} var url = Request.QueryString["url"]; if (!string.IsNullOrEmpty(url)) { logoffUrl = logoffUrl += "?url=" + url; } return Redirect(logoffUrl); //return Redirect("http://portal.gdsspt.cn/c/portal/logout?service=http://localhost:2583/Account/Login"); } /// /// /// /// /// [AllowAnonymous] public ActionResult ForgotPassword(string loginID) { return View(); } /// /// /// /// [AllowAnonymous] [HttpPost] [ValidateAntiForgeryToken] public ActionResult ForgotPassword() { var result = new ReturnMessage { IsSuccess = true, Message = "邮件发送成功,请查收。" }; string loginID = Request.Form["LoginID"]; string failUrl = Url.Content("~/Account/ForgotPassword?LoginID=" + loginID); string successUrl = Url.Content("~/Account/Login"); var user = UserServices.GetUserByLoginID(loginID); if (user == null) { result.IsSuccess = false; result.Message = "用户名输入错误。"; return Json(result); } var url = HttpContext.Request.Url.Scheme + "://" + HttpContext.Request.Url.Host + ":" + HttpContext.Request.Url.Port + Url.Content("~/").TrimEnd('/'); try { var email = UserServices.GetUserEmail(user.UserID); if (email == null) { result.IsSuccess = false; result.Message = "用户并没有注册电子邮箱信息。"; return Json(result); } MailVerifyServices.SendVerifyMail(url, user.UserID, email); return Json(result); } catch (Exception ex) { result.IsSuccess = false; result.Message = ex.Message; return Json(result); } } /// /// 新增忘记密码页面 /// /// /// [AllowAnonymous] public ActionResult NewForgotPassword(string loginID) { return View(); } /// /// 新增忘记密码页面 /// /// [AllowAnonymous] [HttpPost] [ValidateAntiForgeryToken] public ActionResult NewForgotPassword() { var result = new ReturnMessage { IsSuccess = true, Message = "邮件发送成功,请查收。" }; string loginID = Request.Form["LoginID"]; string failUrl = Url.Content("~/Account/NewForgotPassword?LoginID=" + loginID); string successUrl = Url.Content("~/Account/NewLogin"); var user = UserServices.GetUserByLoginID(loginID); if (user == null) { result.IsSuccess = false; result.Message = "用户名输入错误。"; return Json(result); } var url = HttpContext.Request.Url.Scheme + "://" + HttpContext.Request.Url.Host + ":" + HttpContext.Request.Url.Port + Url.Content("~/").TrimEnd('/'); try { var email = UserServices.GetUserEmail(user.UserID); if (email == null) { result.IsSuccess = false; result.Message = "用户并没有注册电子邮箱信息。"; return Json(result); } MailVerifyServices.SendVerifyMail(url, user.UserID, email); return Json(result); } catch (Exception ex) { result.IsSuccess = false; result.Message = ex.Message; return Json(result); } } /// /// /// /// public ActionResult ChangePassword() { return View(); } /// /// /// /// /// [HttpPost] public ActionResult ChangePassword(ChangePasswordView changePasswordView) { try { var principal = ((EMIS.Utility.FormValidate.CustomPrincipal)HttpContext.User); var loginID = principal.LoginID; var user = UserServices.GetUserByLoginID(loginID); if (user.Password.ToLower() != changePasswordView.OldPassword.MD5().ToLower()) { return Json(new ReturnMessage() { IsSuccess = false, Message = "保存失败:原密码验证失败" }); } UserServices.ChangePassword(changePasswordView, user.UserID); return Json(new ReturnMessage() { IsSuccess = true, Message = "密码已经成功修改!" }); } catch (Exception ex) { return Json(new ReturnMessage() { IsSuccess = false, Message = "保存失败:" + ex.Message }); } } /// /// /// /// /// public ActionResult GetTicket(string url) { FormsAuthenticationHelper fa = new FormsAuthenticationHelper(); fa.GetTicket(System.Web.HttpContext.Current, url); return Json(true); } /// /// /// /// /// [HttpPost] [AllowAnonymous] public ActionResult AuthTicket(string ticket) { FormsAuthenticationHelper fa = new FormsAuthenticationHelper(); EMIS.Utility.FormValidate.CustomPrincipal user = (EMIS.Utility.FormValidate.CustomPrincipal)fa.ValidateTitcket(System.Web.HttpContext.Current, ticket); return Json(user.LoginID); } /// /// 录取名单页面 /// /// [HttpGet] [AllowAnonymous] public ActionResult NewStudentEnter() { //ViewBag.ReturnUrl = returnUrl; var model = this.GetUserCookies(); if (model != null) { return View(model); } return View(); } /// /// 录取名单页面列表查询 /// /// /// [HttpPost] [AllowAnonymous] //[ValidateAntiForgeryToken] public ActionResult NewStudentEnter(string examineeNum, string verifyCode, string userName) { if (verifyCode != Session["code"] as string) { //ModelState.AddModelError("", "请输入正确的验证码!"); return base.Json("错误"); } var newStudentEnterView = newStudentEnterServices.GetNewStudentEnterView(examineeNum, userName); return base.Json(newStudentEnterView); } /// /// 录取通知书打印 /// /// [HttpGet] [AllowAnonymous] public ActionResult Report() { return View(); } } }