ADN Open CIS
Сообщество программистов Autodesk в СНГ

04/12/2013

Vault API: Пользователи и роли, часть 2

Вопрос

Как получить список ролей из сервера хранилища?

Решение

Для этих целей нам необходимо использовать класс Autodesk.Connectivity.WebServices.AdminService.

В предыдущей статье было описано как получить список пользователей сервера Vault. Давайте продолжим работу с тем же примером и добавим метод ListRoles() к нашему классу AdminSample:

Код - C#: [Выделить]
  1. // Перечислить все роли в базе данных
  2. //===============================================================
  3. public static void ListRoles()
  4. {
  5.   using (MyVaultServiceManager mgr = new MyVaultServiceManager(
  6.                             MyVaultServiceManager.Mode.ReadOnly))
  7.   {
  8.     try
  9.     {
  10.       // GetAllRoles() - это позволит получить все роли
  11.       //------------------------------------------------------
  12.       Role[] roles = mgr.Services.AdminService.GetAllRoles();
  13.        // Подготавливаем строку для отображения ролей во всплывающем окне
  14.       string msg = "Id |   Имя\n";
  15.             msg += "-------------\n";
  16.       foreach (Role role in roles)
  17.         msg += role.Id.ToString() + ": " + role.Name + "\n";
  18.       MessageBox.Show(msg, "Роли найдены");
  19.        // Так мы находим некоторую произвольную роль
  20.       Role admin = FindRole(roles, "Администратор");
  21.       if (admin != null)
  22.         MessageBox.Show("Id роли Администратора "
  23.                       + admin.Id.ToString());
  24.     }
  25.     catch (System.Exception err)
  26.     {
  27.       MessageBox.Show(err.ToString());
  28.     } // try
  29.   } // using
  30. } // ListRoles()

Также в этой части кода мы ищем роль с названием «Администратор», для этой цели мы создали очень простую функцию, которая проходит через массив ролей:

Код - C#: [Выделить]
  1. // Найти роль по её имени.
  2. // Параметры: - Массив ролей;
  3. //            - Имя искомой роли.
  4. // Возвращает найденную роль, либо возвращает null, если роль не найдена.
  5. //===============================================================
  6. private static Role FindRole(Role[] i_roles, string i_roleName)
  7. {
  8.   Role found = null;
  9.   foreach(Role role in i_roles)
  10.     if (role.Name == i_roleName)
  11.     {
  12.       found = role;
  13.       break;
  14.     }
  15.   return found;
  16. }

На выходе этой программы получаем список ролей, которые существуют в хранилище по умолчанию:

Источник: http://adndevblog.typepad.com/manufacturing/2012/07/vault-api-users-and-roles-part-2.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=376

Опубликовано 04.12.2013
Отредактировано 10.12.2013 в 14:30:45