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