using System;
using System.DirectoryServices;
namespace ActiveDirectory_Demo1.GlobalObjects.AuthorityObjects
{
/// <summary>
/// Summary description for ManagerObject.
/// </summary>
public class ManagerObject : BaseObject
{
private string managername;
private string id;
private string login;
private string homepage;
private ManagerObject manager;
private DirectoryEntry originaldirectoryentry;
private string objecttype;
private string path;
/// <summary>
/// The Manager Object is a user or group which represents the entity that manages the object below it.
/// </summary>
/// <param name="de">DirectoryEntry object (user/group) to derrive the Manager from</param>
public ManagerObject(DirectoryEntry de)
{
if(de.SchemaClassName.ToLower() == "group" && de.Properties["managedBy"].Value != null)
{
originaldirectoryentry = new DirectoryEntry(DEFAULTDOMAIN +"/"+ de.Properties["managedBy"].Value.ToString(), DEFAULTUSERNAME, DEFAULTPASSWORD, AuthenticationTypes.Secure);
Path = originaldirectoryentry.Path;
}
else if(de.SchemaClassName.ToLower() == "user" && de.Properties["manager"].Value != null)
{
originaldirectoryentry = new DirectoryEntry(DEFAULTDOMAIN +"/"+ de.Properties["manager"].Value.ToString(), DEFAULTUSERNAME, DEFAULTPASSWORD, AuthenticationTypes.Secure);
Path = originaldirectoryentry.Path;
HomePage = GetHomePage();
}
else
{
ObjectType = null;
ManagerName = null;
HomePage = null;
}
if(originaldirectoryentry != null)
{
ID = de.NativeGuid;
Login = originaldirectoryentry.Properties["sAMAccountName"].Value.ToString();
ObjectType = originaldirectoryentry.SchemaClassName.ToLower();
ManagerName = this.originaldirectoryentry.Name.Replace("CN=","");
Manager = GetManager(this.originaldirectoryentry);
}
}
/// <summary>
/// Name of the user.
/// </summary>
public string ManagerName
{
get { return managername; }
set { managername = value; }
}
/// <summary>
/// NativeGuid of the DirectoryEntry
/// </summary>
public string ID
{
get { return id; }
set { id = value; }
}
/// <summary>
/// Login used to authenticate
/// </summary>
public string Login
{
get{ return login; }
set{ login = value; }
}
/// <summary>
/// HomePage
/// </summary>
public string HomePage
{
get { return homepage; }
set { homepage = value;}
}
/// <summary>
/// Manager Object who is the manager of this Object
/// </summary>
public ManagerObject Manager
{
get { return manager; }
set { manager = value; }
}
/// <summary>
/// Type of object (user/group)
/// </summary>
public string ObjectType
{
get { return objecttype; }
set { objecttype = value; }
}
/// <summary>
/// Path from the oringinal DirectoryEntry
/// </summary>
public string Path
{
get{ return path; }
set{ path = value; }
}
private ManagerObject GetManager(DirectoryEntry de)
{
Object mngrObj = null;
if(de.SchemaClassName.ToLower() == "group")
{mngrObj = de.Properties["managedBy"].Value;}
else if(de.SchemaClassName.ToLower() == "user")
{mngrObj = de.Properties["manager"].Value;}
if(mngrObj != null)
{
return new ManagerObject(de);
}
else
{return null;}
}
private string GetHomePage()
{
string rtn = "";
if(this.originaldirectoryentry.Properties["wWWHomePage"].Value != null)
{rtn = this.originaldirectoryentry.Properties["wWWHomePage"].Value.ToString();}
return rtn;
}
}
}