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);
    }

Как передать в него сведения о текущем авторизованном пользователе?


Ответы (0 шт):