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

03/12/2013

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

Вопрос

Я хотел бы получить список пользователей, зарегистрированных на сервере хранилища. Не могли бы вы предоставить пример приложения для решения этой задачи, пожалуйста?

Решение

Autodesk.Connectivity.WebServices.AdminService - класс, который управляет пользователями, группами, ролями, и т.д.

Для получения доступа к списку пользователей мы должны подключиться к серверу хранилища, и прочитать вначале свойство WebServiceManager.AdminService. Я создам полезный класс для обслуживания подключения (см. класс MyVaultServiceManager в коде ниже).

Далее, есть метод AdminService.GetAllUsers(), который возвращает массив объектов класса User. Из класса User мы можем получить такую информацию о пользователе: имя, ID, адресс электронной почты, и т.д.

Вот пример: Метод AdminSample.PrintUserInfo() - это то что вам нужно для вызова программы. Например, когда пользователь нажимает кнопку:

Код - C#: [Выделить]
  1. private void printUserInfo_button_Click(object sender, EventArgs e)
  2. {
  3.   MyVault.AdminSample.PrintUserInfo();
  4. }

Программа выведет:

          

А вот и сам код:

Код - C#: [Выделить]
  1. using System.IO;
  2. using System.Windows.Forms;
  3. using Autodesk.Connectivity.WebServices;
  4. using Autodesk.Connectivity.WebServicesTools;
  5. namespace MyVault
  6. {
  7.   // Обертка для соединения сервера хранилища.
  8.   // Расположите его в блоке 'using' для автоматического вызова Dispose(),
  9.   //   это обеспечит выход по завершению.
  10.   //=================================================================
  11.   class MyVaultServiceManager : System.IDisposable
  12.   {
  13.     // Здесь мы инкапсулируем WebServiceManager.
  14.     // WebServiceManager будет использован для наших вызовов сервера хранилища.
  15.     private WebServiceManager _svcManager = null;
  16.     public WebServiceManager Services
  17.       { get { return _svcManager; } }
  18.    public enum Mode { ReadOnly, ReadWrite }; 
  19.    // .для предотвращения использования конструктора по умолчанию - он сделан private
  20.     private MyVaultServiceManager() { }
  21.      // Конструктор.
  22.     // Параметр: - Подключиться в режиме «только для чтения», который
  23.     //             не использует лицензию.
  24.     //===============================================================
  25.     public MyVaultServiceManager(Mode i_ReadWriteMode)
  26.     {
  27.       UserPasswordCredentials login = new UserPasswordCredentials(
  28.                            "localhost", "Vault", "Администратор", "",
  29.                            (i_ReadWriteMode == Mode.ReadOnly) );
  30.                 // Да, мы не должны хранить учетные данные здесь
  31.                 // однако это просто пример
  32.       _svcManager = new WebServiceManager(login);
  33.     }
  34.      void System.IDisposable.Dispose()
  35.     {
  36.       _svcManager.Dispose();
  37.     }
  38.    } // class MyVaultServiceManager
  39.    // Этот пример будет пробовать выполнять различные операции, связанные
  40.   //    с администрированием хранилища.
  41.   //=================================================================
  42.   class AdminSample
  43.   {
  44.      // Перечислить всех пользователей с их ролями и хранилищами
  45.     //   к которым они имеют доступ.
  46.     //===============================================================
  47.     public static void PrintUserInfo()
  48.     {
  49.       try
  50.       {
  51.         using (MyVaultServiceManager mgr = new MyVaultServiceManager(
  52.                                 MyVaultServiceManager.Mode.ReadOnly))
  53.         {
  54.           // Метод GetAllUsers предоставляет всю пользовательскую информацию
  55.           //-----------------------------------------------------
  56.           User[] users = mgr.Services.AdminService.GetAllUsers();
  57.            // Мы отобразим эту информацию в простом окне сообщения
  58.           string msg = "";
  59.           foreach (User user in users)
  60.           {
  61.             UserInfo userInfo =
  62.               mgr.Services.AdminService.GetUserInfoByUserId(user.Id);
  63.             msg += user.Name + "\n----------------";
  64.             if (userInfo.Roles != null && userInfo.Roles.Length > 0)
  65.             {
  66.               msg += "\n   Роли:";
  67.               foreach (Role role in userInfo.Roles)
  68.               {
  69.                 msg += "\n\tId:   " + role.Id
  70.                      + «.\tИмя: " + role.Name;
  71.               }
  72.             }
  73.              if (userInfo.Vaults != null && userInfo.Vaults.Length >0)
  74.             {
  75.               msg += "\n   Хранилища:";
  76.               foreach (KnowledgeVault vault in userInfo.Vaults)
  77.               {
  78.                 msg += "\n\tId:   " + vault.Id
  79.                      + «.\tИмя: " + vault.Name;
  80.               }
  81.             }
  82.             msg += "\n================================\n";
  83.           }
  84.            MessageBox.Show( msg, "Завершено!");
  85.          } // using
  86.       }
  87.       catch (System.Exception err)
  88.       {
  89.         MessageBox.Show(err.Message);
  90.       }
  91.     } // PrintUserInfo()
  92.    } // class AdminSample
  93.  } // namespace AdminExample

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

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

Опубликовано 03.12.2013
Отредактировано 05.12.2013 в 11:52:15