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