ASP.Net MVC личный кабинет при Windows авторизации
Подскажите пожалуйста, есть проект Asp Net MVC с авторизацией windows. То есть будет работать только внутри локальной сети. Реализовано подключение к AD и вывод всех пользователей на таблицу в виде телефонного справочника. Так же в проекте есть определение кто авторизовался. И так вопрос, как можно реализовать личный кабинет для каждого пользователя. Например для хранения фотографий. Я знаю что в AD можно хранить фотографии в атрибутах. Но хотелось чтоб фотографий было больше чем 2 шт. или хранения дополнительной информации отсутствующей в AD. Как подружить все это дело с MS SQL (там же придется хранить доп. информацию?) Метод получение данных из AD
public ActionResult GridViewPartial()
{
IEnumerable<Person> persons = GetPeople();
return PartialView("_GridViewPartial", persons);
}
public static List<Person> GetPeople()
{
List<Person> people = new List<Person>();
var path = new PrincipalContext(ContextType.Domain, "RCSON.local", "OU=RCSON, DC=RCSON, DC=local");
UserPrincipal user = new UserPrincipal(path);
user.Enabled = true;
user.Name = "*";
//user.VoiceTelephoneNumber = "*";
user.EmailAddress = "*";
//user.Description = "";
var search = new System.DirectoryServices.AccountManagement.PrincipalSearcher();
search.QueryFilter = user;
var results = search.FindAll();
foreach (UserPrincipal item in results)
{
var directoryEntry = item.GetUnderlyingObject() as DirectoryEntry;
people.Add(new Person
{
DisplayName = item.Name,
PhoneNumber = item.VoiceTelephoneNumber,
ExtensionPhoneNumber = item.VoiceTelephoneNumber,
Email = item.EmailAddress,
Office = directoryEntry.Properties["physicalDeliveryOfficeName"].Value as string,
Department = directoryEntry.Properties["subdivision"].Value as string,
Title = directoryEntry.Properties["title"].Value as string,
DepartmentNumber = Convert.ToInt32(directoryEntry.Properties["departmentNumber"].Value),
Subdivision = directoryEntry.Properties["department"].Value as string,
Manager = directoryEntry.Properties["manager"].Value as string,
Mobile = directoryEntry.Properties["mobile"].Value as string,
EmployeeNumber = Convert.ToInt32(directoryEntry.Properties["employeeNumber"].Value),
company = directoryEntry.Properties["company"].Value as string,
BirthDay = Convert.ToDateTime(directoryEntry.Properties["postOfficeBox"].Value)
});
}
return people;
}
И метод создание частичного представления для личного кабинета не могу сообразить
public PartialViewResult Details(string name)
{
Person person = GetPeople()
.Find(x => x.DisplayName == name);
return PartialView(person);
}
Как передать в него сведения о текущем авторизованном пользователе?