Skip to content

Commit

Permalink
Added DistinguishedName to UserAccount
Browse files Browse the repository at this point in the history
  • Loading branch information
muneeb456 committed Jan 20, 2016
1 parent 42210d3 commit eb533a5
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 18 deletions.
28 changes: 10 additions & 18 deletions DirectoryLib/Context.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ public UserAccount GetUser(string domain, string samAccountName)
throw new ArgumentException("Invalid argument: samAccountName is null or empty", "samAccountName");
}

string path = GetGCPath(domain);
string branch = "DC=" + domain.Replace(".", ",DC=");
string path = GetGCPath(branch);
string filter = string.Format("(&(objectClass=person)(samAccountName={0}))", samAccountName);

using (var entry = new DirectoryEntry(path))
Expand All @@ -89,14 +90,11 @@ public UserAccount GetUser(string domain, string samAccountName)

/// <summary>
/// Get user by email address ([email protected])
/// If the domain is not provided, it searches the entire directory.
/// </summary>
/// <param name="email">Email address ([email protected])</param>
/// <param name="domain">Optional domain (exmpl.wdc.com)</param>
public UserAccount GetUserByEmail(string email, string domain = null)
public UserAccount GetUserByEmail(string email)

This comment has been minimized.

Copy link
@styfle

styfle Jan 20, 2016

Collaborator

I have been meaning to add something like this. Nice :shipit:

{
string path = GetGCPath(domain);

string path = GetGCPath();
string filter = string.Format("(&(objectClass=person)(mail={0}))", email);

using (var entry = new DirectoryEntry(path))
Expand All @@ -121,13 +119,7 @@ public UserAccount GetUserByEmail(string email, string domain = null)
/// <param name="upn">UserPrincipalName ([email protected])</param>
public UserAccount GetUserByUpn(string upn)
{
string domain = GetDomainFromUpn(upn);
if (domain == null)
{
throw new ArgumentException("Invalid upn '" + upn + "'. Expected one @ symbol.", "upn");
}

string path = GetGCPath(domain);
string path = GetGCPath();
string filter = string.Format("(&(objectClass=person)(userPrincipalName={0}))", upn);

using (var entry = new DirectoryEntry(path))
Expand All @@ -147,7 +139,7 @@ public UserAccount GetUserByUpn(string upn)

/// <summary>
/// Get user by NT Name (exmpl\last_f).
/// This can be slower than GetUser() and GetUserByUpn() due to a call to GetDomainNameByNetBios()
/// This can be slower than other GetUser() methods due to a call to GetDomainNameByNetBios()
/// </summary>
/// <param name="ntName">NT Name (exmpl\last_f)</param>
public UserAccount GetUserByNtName(string ntName)
Expand Down Expand Up @@ -336,6 +328,7 @@ private UserAccount GetUserFromResult(SearchResult result)
PhysicalDeliveryOfficeName = TryGetResult<string>(result, "physicalDeliveryOfficeName"),
Description = TryGetResult<string>(result, "description"),
JpegPhoto = TryGetResult<byte[]>(result, "thumbnailPhoto"),
DistinguishedName = TryGetResult<string>(result, "distinguishedName"),
Domain = GetDomainFromUpn(TryGetResult<string>(result, "userPrincipalName")),
SamAccountName = TryGetResult<string>(result, "samAccountName"),
UserPrincipalName = TryGetResult<string>(result, "userPrincipalName")
Expand Down Expand Up @@ -365,12 +358,11 @@ private string GetDomainFromUpn(string upn)
return a[1];
}

private string GetGCPath(string domain = null)
private string GetGCPath(string branch = null)
{
string path;
if (!string.IsNullOrEmpty(domain))
{
string branch = "DC=" + domain.Replace(".", ",DC=");
if (!string.IsNullOrEmpty(branch))
{
path = string.Format("GC://{0}/{1}", gcHostname, branch);
}
else
Expand Down
5 changes: 5 additions & 0 deletions DirectoryLib/Types/UserAccount.cs
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,11 @@ public string ObjectGuidAsHex
/// </summary>
public string Domain { get; set; }

/// <summary>
/// Same as the Distinguished Name for an object. Used by Exchange
/// </summary>
public string DistinguishedName { get; set; }

/// <summary>
/// The logon name used to support clients and servers running earlier versions of the operating system,
/// such as Windows NT 4.0, Windows 95, Windows 98, and LAN Manager.
Expand Down

0 comments on commit eb533a5

Please sign in to comment.