43 lines
1.5 KiB
C#
43 lines
1.5 KiB
C#
using Disco.Models.Interop.ActiveDirectory;
|
|
using System;
|
|
using Disco.Models.Repository;
|
|
namespace Disco.BI.Interop.ActiveDirectory
|
|
{
|
|
internal static class ActiveDirectoryUserAccountExtensions
|
|
{
|
|
public static bool HasRole(this ActiveDirectoryUserAccount account, string Role)
|
|
{
|
|
return account.Groups != null && account.Groups.Contains(Role.ToLower());
|
|
}
|
|
|
|
public static object GetPropertyValue(this ActiveDirectoryUserAccount account, string PropertyName, int Index = 0)
|
|
{
|
|
switch (PropertyName.ToLower())
|
|
{
|
|
case "name":
|
|
return account.Name;
|
|
case "samaccountname":
|
|
return account.sAMAccountName;
|
|
case "distinguishedname":
|
|
return account.DistinguishedName;
|
|
case "objectsid":
|
|
return account.ObjectSid;
|
|
case "sn":
|
|
return account.Surname;
|
|
case "givenname":
|
|
return account.GivenName;
|
|
case "mail":
|
|
return account.Email;
|
|
case "telephonenumber":
|
|
return account.Phone;
|
|
default:
|
|
object[] adProperty;
|
|
if (account.LoadedProperties.TryGetValue(PropertyName, out adProperty) && Index <= adProperty.Length)
|
|
return adProperty[Index];
|
|
else
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
}
|