📄 accountcontroller.cs
字号:
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Security.Principal;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using System.Web.UI;
using System.Data;
using System.Data.SqlClient;
using System.Web.Profile;
using System.Net.Mail;
using SkyiSite.Tooltip;
namespace SkyiSite.Controllers
{
[HandleError]
public class AccountController : Controller
{
#region ==========AccountController初始化==========
// This constructor is used by the MVC framework to instantiate the controller using
// the default forms authentication and membership providers.
SkyiSite.Models.SkyiSiteDBDataContext SkyiSiteDBDataContext = new SkyiSite.Models.SkyiSiteDBDataContext();
public AccountController()
: this(null, null)
{
}
// This constructor is not used by the MVC framework but is instead provided for ease
// of unit testing this type. See the comments at the end of this file for more
// information.
public AccountController(IFormsAuthentication formsAuth, IMembershipService service)
{
FormsAuth = formsAuth ?? new FormsAuthenticationService();
MembershipService = service ?? new AccountMembershipService();
}
public IFormsAuthentication FormsAuth
{
get;
private set;
}
public IMembershipService MembershipService
{
get;
private set;
}
#endregion
#region ==========Login===========
public ActionResult Login()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Login(string userName, string password, bool rememberMe, string returnUrl)
{
if (!Membership.ValidateUser(userName, SkyiSite.Tooltip.PassWordHelper.Instance.Encrypt_DES_String(password)))
{
ModelState.AddModelError("_FORM", "验证失败,请输入正确的用户名和密码或请确认此帐户是否停用.");
return View();
}
MembershipUser membershipUser = Membership.GetUser(userName);
if (membershipUser.IsLockedOut)
{
ModelState.AddModelError("_FORM", "帐户已经被锁定,您是否频繁登录或修改密码,详情请联系管理员");
return View();
}
SkyiSite.DBUtility.ProfileInfo profile = SkyiSite.DBUtility.Profile.Instance.Get(userName);
if (!profile.IsAudited)
{
ModelState.AddModelError("_FORM", "帐户未审核,详情请联系管理员");
return View();
}
if (profile.IsStoped)
{
ModelState.AddModelError("_FORM", "帐户已停用,详情请联系管理员");
return View();
}
FormsAuth.SignIn(userName, rememberMe);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
if (Roles.GetRolesForUser(userName).Contains("管理员"))
{
return RedirectToAction("Index", "Admin");
}
return RedirectToAction("Index", "Home");
}
}
#endregion
#region ===========Register===========
public ActionResult Register()
{
ViewData["RoleList"] = GetRoleList();
return View();
}
private IEnumerable<System.Web.Mvc.SelectListItem> GetRoleList()
{
List<System.Web.Mvc.SelectListItem> list = new List<System.Web.Mvc.SelectListItem>();
foreach (string role in Roles.GetAllRoles())
{
if (role.Contains("管理员")) continue;
System.Web.Mvc.SelectListItem item = new SelectListItem();
item.Text = role;
item.Value = role;
list.Add(item);
}
return list;
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register(string UserName, string RealityName, string UserType, string PassWord,
string ConfirmPassword, string Tele, string Mobile, string Corporation, string Email, string Address, string PostCode)
{
string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "Files/Admin/RegistrUserName.xml";
string emailPath = System.AppDomain.CurrentDomain.BaseDirectory + "Files/Admin/Email.xml";
ViewData["RoleList"] = GetRoleList();
if (System.IO.File.Exists(filePath))
{
if (SkyiSite.DBUtility.User.Instance.AllowRegister(UserName, filePath))
{
ModelState.AddModelError("_FORM", "此用户已存在或此用户名是网站关键字,请选择其它用户名!");
return View();
}
}
else
{
if (Membership.GetUser(UserName) != null)
{
ModelState.AddModelError("_FORM", "此用户已存在,请选择其它用户名!");
return View();
}
}
if (UserType == null)
{
ModelState.AddModelError("_FORM", "请选择用户类别!.");
return View();
}
if (Membership.FindUsersByEmail(Email) != null)
{
if (Membership.FindUsersByEmail(Email).Count > 0)
{
ModelState.AddModelError("_FORM", "此Email已经存在,请选择其它Email!.");
return View();
}
}
SkyiSite.DBUtility.ProfileInfo profileInfo = new SkyiSite.DBUtility.ProfileInfo(Mobile, Tele, RealityName, Corporation, false, false, Address, PostCode);
MembershipCreateStatus membershipCreateStatus;
SkyiSite.DBUtility.User.Instance.Add(UserName, PassWord, Email, profileInfo, out membershipCreateStatus);
Roles.AddUserToRole(UserName, UserType);
if (membershipCreateStatus == MembershipCreateStatus.Success)
{
if (System.IO.File.Exists(emailPath))
{
string EmailErrorString = SkyiSite.DBUtility.Email.Instance.SendMail(Email, "注册成功", "注册成功", emailPath);
return RedirectToAction("Empty", new { id = SkyiSite.Tooltip.PassWordHelper.Instance.Encrypt_DES_String(EmailErrorString) });
}
}
else
{
ModelState.AddModelError("_FORM", SkyiSite.DBUtility.User.Instance.ErrorCodeToString(membershipCreateStatus));
return View();
}
// If we got this far, something failed, redisplay form
return RedirectToAction("Empty", new { id = SkyiSite.Tooltip.PassWordHelper.Instance.Encrypt_DES_String("注册成功,正在审核中,已经将邮件发送到你的Email,请注意查收!") });
}
private bool ValidateRegistration(string userName, string email, string password, string confirmPassword)
{
if (String.IsNullOrEmpty(userName))
{
ModelState.AddModelError("username", "You must specify a username.");
}
if (String.IsNullOrEmpty(email))
{
ModelState.AddModelError("email", "You must specify an email address.");
}
if (password == null || password.Length < MembershipService.MinPasswordLength)
{
ModelState.AddModelError("password",
String.Format(CultureInfo.CurrentCulture,
"You must specify a password of {0} or more characters.",
MembershipService.MinPasswordLength));
}
if (!String.Equals(password, confirmPassword, StringComparison.Ordinal))
{
ModelState.AddModelError("_FORM", "The new password and confirmation password do not match.");
}
return ModelState.IsValid;
}
#endregion
#region ========Edit===========
[Authorize]
public ActionResult Edit()
{
SkyiSite.DBUtility.UserInfo user = SkyiSite.DBUtility.User.Instance.Get(Membership.GetUser());
ViewData["User"] = user;
ViewData["RoleList"] = GetRoleList();
return View();
}
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(string UserName, string RealityName, string UserType, string Tele, string Mobile, string Corporation, string Email, string Address, string PostCode)
{
ViewData["RoleList"] = GetRoleList();
if (UserType == null || UserType == "")
{
ModelState.AddModelError("_FORM", "请选择用户类别!.");
return View();
}
if (Membership.GetUser().Email != Email)
{
if (Membership.FindUsersByEmail(Email) != null)
{
if (Membership.FindUsersByEmail(Email).Count > 0)
{
ModelState.AddModelError("_FORM", "此Email已经存在,请选择其它Email!.");
return View();
}
}
}
SkyiSite.DBUtility.ProfileInfo profileInfo = new SkyiSite.DBUtility.ProfileInfo(Mobile, Tele, RealityName, Corporation, true, false, Address, PostCode);
MembershipUser user = Membership.GetUser();
user.Email = Email;
Membership.UpdateUser(user);
SkyiSite.DBUtility.Profile.Instance.Add(UserName, profileInfo);
Membership.UpdateUser(user);
if (!Roles.IsUserInRole(UserName, UserType))
{
Roles.RemoveUserFromRoles(UserName, Roles.GetRolesForUser(UserName));
Roles.AddUserToRole(UserName, UserType);
}
return RedirectToAction("Empty", new { id = SkyiSite.Tooltip.PassWordHelper.Instance.Encrypt_DES_String("用户信息编辑成功") });
}
#endregion
#region ==========Empty==========
public ActionResult Empty(string id)
{
ViewData["Msg"] = SkyiSite.Tooltip.PassWordHelper.Instance.Decrypt_DES_String(id);
return View();
}
#endregion
#region ==========RegisterBefore==========
public ActionResult RegisterBefore()
{
string xmlFile = System.AppDomain.CurrentDomain.BaseDirectory + "Files/Admin/SitConfig.xml";
if (!System.IO.File.Exists(xmlFile))
{
return RedirectToAction("Register");
}
else
{
try
{
DataTable table = SkyiSite.Tooltip.XmlTooltip.Instance.ReadXmlToDataTable(xmlFile);
string isReg = SkyiSite.Tooltip.PassWordHelper.Instance.Decrypt_DES_String(table.Rows[0][0].ToString());
if (!Convert.ToBoolean(isReg))
{
return RedirectToAction("Empty", new { id = SkyiSite.Tooltip.PassWordHelper.Instance.Encrypt_DES_String(SkyiSite.Tooltip.PassWordHelper.Instance.Decrypt_DES_String(table.Rows[0][1].ToString())) });
}
ViewData["data"] = SkyiSite.Tooltip.PassWordHelper.Instance.Decrypt_DES_String(table.Rows[0][2].ToString());
table.Dispose();
}
catch
{
return RedirectToAction("Register");
}
}
return View();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -