⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accountcontroller.cs

📁 人物传记/成功经验人物传记/成功经验人物传记/成功经验人物传记/成功经验人物传记/成功经验
💻 CS
📖 第 1 页 / 共 2 页
字号:
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 + -