修改用户包括修改AD域用户属性及存储位置,也就是移动功能。
#region 修改AD用户
/// <summary>
/// 修改AD账户
/// </summary>
/// <param name="dto">ADUserDto</param>
/// <returns></returns>
public async Task<JsonView> UpdateUser(ADUpdateUserDto dto)
{
var result = new JsonView();
using (DirectoryEntry entry = operateADHelper.IsConnected())
{
try
{
if (dto.oldUserName.Any())
{
var UserPath = GetEntryPath(dto.oldUserName, "user");//获取路径
DirectoryEntry UserDE = entry.Children.Find(UserPath, "user");//按路径查找用户对象
if (dto.UserName.Any())
{
SetProperty(UserDE, "sAMAccountName", dto.UserName);//存储帐户名 与登录名保持一致
SetProperty(UserDE, "userPrincipalName", dto.UserName);//登录名
}
if (dto.FirstName.Any())
SetProperty(UserDE, "sn", dto.FirstName);//姓
if (dto.LastName.Any())
SetProperty(UserDE, "givenName", dto.LastName);//名
if (dto.LastName.Any())
SetProperty(UserDE, "initials", dto.Initials);//英文缩写
if (dto.DisplayName.Any())
SetProperty(UserDE, "displayName", dto.DisplayName);//显示名称
if (dto.Description.Any())
SetProperty(UserDE, "description", dto.Description);//描述
UserDE.CommitChanges();
if (dto.DisplayName.Any())
{
UserDE.Rename("CN=" + dto.DisplayName);//显示名称与CN=保持一致
UserDE.CommitChanges();
}
if (dto.UserPwd.Any())
{
UserDE.Invoke("ChangePassword", dto.oldUserPwd, dto.UserPwd);//修改密码
UserDE.CommitChanges();
}
if (dto.PathName.Any() && dto.PathType.Any())
{
string NewPath = GetEntryPath(dto.PathName, dto.PathType);
DirectoryEntry UserDEpath = entry.Children.Find(NewPath);//按路径查找对象
UserDE.MoveTo(UserDEpath);//MoveTo方法移动到对象路径下
UserDE.CommitChanges();
}
result.Code = 0;
result.Msg = "修改用户成功";
return result;
}
else
{
result.Code = 1;
result.Msg = "未找到该用户,请检查用户名称";
return result;
}
}
catch (DirectoryServicesCOMException ex)
{
result.Code = 1;
result.Msg = "修改用户失败," + ex.Message.ToString();
return result;
}
}
}
#endregion
修改ad用户入参实体
public class ADUpdateUserDto
{
/// <summary>
/// 原始UserName
/// </summary>
public string oldUserName{ get; set; }
/// <summary>
/// 登录名
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 原始密码
/// </summary>
public string oldUserPwd { get; set; }
/// <summary>
/// 新密码
/// </summary>
public string UserPwd { get; set; }
/// <summary>
/// 姓
/// </summary>
public string FirstName { get; set; }
/// <summary>
/// 名
/// </summary>
public string LastName { get; set; }
/// <summary>
/// 英文缩写
/// </summary>
public string Initials { get; set; }
/// <summary>
/// 显示名称
/// </summary>
public string DisplayName { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 路径名
/// </summary>
public string PathName { get; set; }
/// <summary>
/// 路径类型
/// </summary>
public string PathType { get; set; }
/// <summary>
/// 组名
/// </summary>
public string[] GroupName { get; set; }
}