using YLErp.Helpers;
namespace YLErp.Modules.SystemModule
{
///
/// 系统用户密码服务
///
public class SysUserPasswordService : BaseService
{
public SysUserPasswordService(OptUserInfo userInfo) : base(userInfo)
{
}
///
/// 变更密码
///
public void ChangePassword(UserChangePasswordRequest reqModel)
{
if (reqModel is null)
{
throw new ArgumentNullException(nameof(reqModel));
}
if (string.IsNullOrWhiteSpace(reqModel.Password))
{
throw new ServiceException("输入错误,缺少当前密码");
}
if (string.IsNullOrWhiteSpace(reqModel.NewPassword))
{
throw new ServiceException("输入错误,缺少新密码");
}
if (reqModel.NewPassword == null || reqModel.NewPassword.Length < 6 || !reqModel.NewPassword.Any(n => (n >= 'a' && n <= 'z') || (n >= 'A' && n <= 'Z')) || !reqModel.NewPassword.Any(n => n >= '0' && n <= '9'))
{
throw new ServiceException("密码长度至少6位并且包含英文字母和数字");
}
var user = DbContext.SystemUsers.Where(u => u.Id == reqModel.UserId).FirstOrDefault();
if (user == null)
{
throw new ServiceException("用户信息不存在");
}
if (!DataHelper.EncryptPassword(user.LoginName.ToLowerInvariant(), reqModel.Password).Equals(user.Password, StringComparison.OrdinalIgnoreCase))
{
throw new ServiceException("当前密码错误");
}
user.Password = DataHelper.EncryptPassword(user.LoginName.ToLowerInvariant(), reqModel.NewPassword);
DbContext.SaveChanges();
}
}
}