コード例 #1
0
ファイル: MobileService.cs プロジェクト: zanderzhg/STO.Print
        /// <summary>
        /// 忘记密码按手机号码获取
        /// </summary>
        /// <param name="applicationCode">应用编号</param>
        /// <param name="accountCode">账户</param>
        /// <param name="password">密码</param>
        /// <param name="userName">用户名</param>
        /// <param name="mobile">手机号码</param>
        /// <returns>成功</returns>
        public bool GetPasswordByMobile(BaseUserInfo userInfo, string userName, string mobile)
        {
            bool result = false;

            if (!string.IsNullOrEmpty(mobile))
            {
                BaseUserContactManager manager = new BaseUserContactManager();
                List <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >();
                if (!string.IsNullOrEmpty(mobile))
                {
                    parameters.Add(new KeyValuePair <string, object>(BaseUserContactEntity.FieldMobile, mobile));
                }
                // 手机号码重复不发验证码,防止把别人的密码给修改了
                DataTable dt = manager.GetDataTable(parameters);
                string    id = string.Empty;
                if (dt != null && dt.Rows.Count == 1)
                {
                    id = dt.Rows[0][BaseUserContactEntity.FieldId].ToString();
                }
                BaseUserManager userManager = null;
                if (!string.IsNullOrEmpty(id))
                {
                    userManager = new BaseUserManager();
                    bool           userNameOK = true;
                    BaseUserEntity userEntity = userManager.GetObject(id);
                    if (!string.IsNullOrEmpty(userName))
                    {
                        if (!string.IsNullOrEmpty(userEntity.UserName) && !userEntity.UserName.Equals(userName))
                        {
                            userNameOK = false;
                            userInfo   = null;
                        }
                    }
                    // 只有有效的用户,才能获取密码,被删除的,无效的,不可以获取密码
                    if (userEntity.Enabled == 0 || userEntity.DeletionStateCode == 1)
                    {
                        userNameOK = false;
                        userInfo   = null;
                    }
                    if (userNameOK)
                    {
                        userInfo = userManager.ConvertToUserInfo(userEntity);
                    }
                    else
                    {
                        userInfo = null;
                    }
                }
                if (!string.IsNullOrEmpty(id) && userInfo != null)
                {
                    string userPassword = string.Empty;
                    if (BaseSystemInfo.CheckPasswordStrength)
                    {
                        userPassword = BaseRandom.GetRandomString(8).ToLower();
                    }
                    else
                    {
                        userPassword = BaseRandom.GetRandomString(8).ToLower();
                        // Random random = new System.Random();
                        // userPassword = random.Next(100000, 999999).ToString();
                    }
                    // 看是否有合理的请求参数
                    if (!string.IsNullOrEmpty(userPassword))
                    {
                        // 看是否一天超过了3次了
                        int sendUserPasswordCount = this.GetSendUserPasswordCount(mobile);
                        if (sendUserPasswordCount < 4)
                        {
                            // 应用编号
                            if (this.SendUserPassword(userInfo, mobile, userPassword))
                            {
                                userManager = new BaseUserManager(userInfo);
                                // 按手机号码获取的,可以自动解锁,防止密码连续输入错误,然后手机号码获取密码后,是被锁定状态,提高工作效率
                                userManager.SetPassword(userInfo.Id, userPassword, true);
                                userManager.GetStateMessage();
                                if (userManager.StatusCode == Status.SetPasswordOK.ToString())
                                {
                                    result = true;
                                }
                            }
                        }
                    }
                }
            }
            return(result);
        }
コード例 #2
0
        /// <summary>
        /// 忘记密码按电子邮件获取
        /// </summary>
        /// <param name="taskId">任务标识</param>
        /// <param name="userInfo">用户信息</param>
        /// <param name="userName">用户名</param>
        /// <param name="email">电子邮件</param>
        /// <returns>成功</returns>
        public bool GetPasswordByEmail(string taskId, BaseUserInfo userInfo, string userName, string email)
        {
            bool result = false;

            BaseUserContactManager manager = new BaseUserContactManager();
            List <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >();

            if (!string.IsNullOrEmpty(email))
            {
                parameters.Add(new KeyValuePair <string, object>(BaseUserContactEntity.FieldEmail, email));
            }
            string id = manager.GetId(parameters);

            if (!string.IsNullOrEmpty(id))
            {
                BaseUserManager userManager = new BaseUserManager();
                bool            userNameOK  = true;
                BaseUserEntity  userEntity  = userManager.GetObject(id);
                if (!string.IsNullOrEmpty(userName))
                {
                    if (!string.IsNullOrEmpty(userEntity.UserName) && !userEntity.UserName.Equals(userName))
                    {
                        userNameOK = false;
                        userInfo   = null;
                    }
                }
                if (userNameOK)
                {
                    userInfo = userManager.ConvertToUserInfo(userEntity);
                }
            }
            if (!string.IsNullOrEmpty(id))
            {
                string userPassword = string.Empty;
                if (BaseSystemInfo.CheckPasswordStrength)
                {
                    userPassword = BaseRandom.GetRandomString(8).ToLower();
                }
                else
                {
                    userPassword = BaseRandom.GetRandomString(8).ToLower();
                    // Random random = new System.Random();
                    // userPassword = random.Next(100000, 999999).ToString();
                }

                // 邮件内容
                SmtpClient smtpClient = new SmtpClient(BaseSystemInfo.MailServer);
                smtpClient.UseDefaultCredentials = false;
                smtpClient.Credentials           = new NetworkCredential(BaseSystemInfo.MailUserName, BaseSystemInfo.MailPassword);
                // 指定如何处理待发的邮件
                smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;

                string mailTitle = BaseSystemInfo.SoftFullName + "忘记密码";

                string mailBody = "您的新密码为:" + userPassword + " " + System.Environment.NewLine
                                  + "<br/> " + System.Environment.NewLine + BaseSystemInfo.SoftFullName + "访问地址: http://www.zto.cn/";
                // 读取模板文件
                string file = BaseSystemInfo.StartupPath + "\\Forgot.Mail.txt";
                if (System.IO.File.Exists(file))
                {
                    mailBody = System.IO.File.ReadAllText(file, Encoding.UTF8);
                    mailBody = mailBody.Replace("{Realname}", userInfo.RealName);
                    mailBody = mailBody.Replace("{UserPassword}", userPassword);
                }
                // 发送邮件
                MailMessage mailMessage = new MailMessage(BaseSystemInfo.MailUserName, email, mailTitle, mailBody);
                mailMessage.BodyEncoding = Encoding.Default;
                mailMessage.IsBodyHtml   = true;
                smtpClient.Send(mailMessage);

                BaseUserManager userManager = new BaseUserManager(userInfo);
                userManager.SetPassword(userInfo.Id, userPassword);
                userManager.GetStateMessage();
                if (userManager.StatusCode == Status.SetPasswordOK.ToString())
                {
                    result = true;
                }
                else
                {
                    result = false;
                }
            }

            return(result);
        }
コード例 #3
0
        /// <summary>
        /// 忘记密码按电子邮件获取
        /// </summary>
        /// <param name="taskId">任务标识</param>
        /// <param name="userInfo">用户信息</param>
        /// <param name="userName">用户名</param>
        /// <param name="email">电子邮件</param>
        /// <returns>成功</returns>
        public bool GetPasswordByEmail(string taskId, BaseUserInfo userInfo, string userName, string email)
        {
            var result = false;

            var manager    = new BaseUserContactManager();
            var parameters = new List <KeyValuePair <string, object> >();

            if (!string.IsNullOrEmpty(email))
            {
                parameters.Add(new KeyValuePair <string, object>(BaseUserContactEntity.FieldEmail, email));
            }
            var id = manager.GetId(parameters);

            if (!string.IsNullOrEmpty(id))
            {
                var userManager = new BaseUserManager();
                var userNameOk  = true;
                var userEntity  = userManager.GetEntity(id);
                if (!string.IsNullOrEmpty(userName))
                {
                    if (!string.IsNullOrEmpty(userEntity.UserName) && !userEntity.UserName.Equals(userName, StringComparison.Ordinal))
                    {
                        userNameOk = false;
                        userInfo   = null;
                    }
                }
                if (userNameOk)
                {
                    userInfo = userManager.ConvertToUserInfo(userEntity);
                }
            }
            if (!string.IsNullOrEmpty(id))
            {
                var userPassword = string.Empty;
                if (BaseSystemInfo.CheckPasswordStrength)
                {
                    userPassword = RandomUtil.GetString(8).ToLower();
                }
                else
                {
                    userPassword = RandomUtil.GetString(8).ToLower();
                    // Random random = new System.Random();
                    // userPassword = random.Next(100000, 999999).ToString();
                }

                // 邮件内容
                var smtpClient = new SmtpClient(BaseSystemInfo.MailServer)
                {
                    UseDefaultCredentials = false,
                    Credentials           = new NetworkCredential(BaseSystemInfo.MailUserName, BaseSystemInfo.MailPassword),
                    // 指定如何处理待发的邮件
                    DeliveryMethod = SmtpDeliveryMethod.Network
                };

                var mailTitle = BaseSystemInfo.SoftFullName + "忘记密码";

                var mailBody = "您的新密码为:" + userPassword + " " + Environment.NewLine
                               + "<br/> " + Environment.NewLine + BaseSystemInfo.SoftFullName + "访问地址: http://www.wangcaisoft.com/";
                // 读取模板文件
                var file = BaseSystemInfo.StartupPath + "\\Forgot.Mail.txt";
                if (System.IO.File.Exists(file))
                {
                    mailBody = System.IO.File.ReadAllText(file, Encoding.UTF8);
                    mailBody = mailBody.Replace("{Realname}", userInfo.RealName);
                    mailBody = mailBody.Replace("{UserPassword}", userPassword);
                }
                // 发送邮件
                var mailMessage = new MailMessage(BaseSystemInfo.MailUserName, email, mailTitle, mailBody)
                {
                    BodyEncoding = Encoding.Default,
                    IsBodyHtml   = true
                };
                smtpClient.Send(mailMessage);

                var userManager = new BaseUserManager(userInfo);
                userManager.SetPassword(userInfo.UserId, userPassword);
                userManager.GetStateMessage();
                if (userManager.StatusCode == Status.SetPasswordOk.ToString())
                {
                    result = true;
                }
                else
                {
                    result = false;
                }
            }

            return(result);
        }