public static List<ADUser> GetAllUsers()
{
var users = new List<ADUser>();
using (var connection = Connect())
{
var searchRequest = new SearchRequest(
"DC=mags,DC=local",
"(objectClass=user)",
SearchScope.Subtree,
"cn",
"samAccountName",
"mail",
"department",
"title",
"distinguishedName"
);
try
{
var response = (SearchResponse)connection.SendRequest(searchRequest);
foreach (SearchResultEntry entry in response.Entries)
{
var user = new ADUser
{
Name = entry.Attributes["cn"]?[0]?.ToString() ?? "N/A",
Username = entry.Attributes["samAccountName"]?[0]?.ToString() ?? "N/A",
Email = entry.Attributes["mail"]?[0]?.ToString() ?? "N/A",
Department = entry.Attributes["department"]?[0]?.ToString() ?? "N/A",
Title = entry.Attributes["title"]?[0]?.ToString() ?? "N/A",
DistinguishedName = entry.Attributes["distinguishedName"]?[0]?.ToString() ?? "N/A"
};
users.Add(user);
}
}
catch (Exception ex)
{
throw new Exception($"Fejl ved hentning af brugere: {ex.Message}");
}
}
return users;
}
public class ADUser
{
public string Name { get; set; } = "";
public string Username { get; set; } = "";
public string Email { get; set; } = "";
public string Department { get; set; } = "";
public string Title { get; set; } = "";
public string DistinguishedName { get; set; } = "";
}
Map AD-attributter til C#-klasser — så resten af programmet arbejder med typed objekter, ikke rå LDAP-strenge. Brug ?? "N/A" når attributten mangler.