Vault API: Пользователи и роли, часть 1
Вопрос
Я хотел бы получить список пользователей, зарегистрированных на сервере хранилища. Не могли бы вы предоставить пример приложения для решения этой задачи, пожалуйста?
Решение
Autodesk.Connectivity.WebServices.AdminService - класс, который управляет пользователями, группами, ролями, и т.д.
Для получения доступа к списку пользователей мы должны подключиться к серверу хранилища, и прочитать вначале свойство WebServiceManager.AdminService. Я создам полезный класс для обслуживания подключения (см. класс MyVaultServiceManager в коде ниже).
Далее, есть метод AdminService.GetAllUsers(), который возвращает массив объектов класса User. Из класса User мы можем получить такую информацию о пользователе: имя, ID, адресс электронной почты, и т.д.
Вот пример: Метод AdminSample.PrintUserInfo() - это то что вам нужно для вызова программы. Например, когда пользователь нажимает кнопку:
- private void printUserInfo_button_Click(object sender, EventArgs e)
- {
- MyVault.AdminSample.PrintUserInfo();
- }
Программа выведет:
А вот и сам код:
- using System.IO;
- using System.Windows.Forms;
- using Autodesk.Connectivity.WebServices;
- using Autodesk.Connectivity.WebServicesTools;
- namespace MyVault
- {
- // Обертка для соединения сервера хранилища.
- // Расположите его в блоке 'using' для автоматического вызова Dispose(),
- // это обеспечит выход по завершению.
- //=================================================================
- class MyVaultServiceManager : System.IDisposable
- {
- // Здесь мы инкапсулируем WebServiceManager.
- // WebServiceManager будет использован для наших вызовов сервера хранилища.
- private WebServiceManager _svcManager = null;
- public WebServiceManager Services
- { get { return _svcManager; } }
- public enum Mode { ReadOnly, ReadWrite };
- // .для предотвращения использования конструктора по умолчанию - он сделан private
- private MyVaultServiceManager() { }
- // Конструктор.
- // Параметр: - Подключиться в режиме «только для чтения», который
- // не использует лицензию.
- //===============================================================
- public MyVaultServiceManager(Mode i_ReadWriteMode)
- {
- UserPasswordCredentials login = new UserPasswordCredentials(
- "localhost", "Vault", "Администратор", "",
- (i_ReadWriteMode == Mode.ReadOnly) );
- // Да, мы не должны хранить учетные данные здесь
- // однако это просто пример
- _svcManager = new WebServiceManager(login);
- }
- void System.IDisposable.Dispose()
- {
- _svcManager.Dispose();
- }
- } // class MyVaultServiceManager
- // Этот пример будет пробовать выполнять различные операции, связанные
- // с администрированием хранилища.
- //=================================================================
- class AdminSample
- {
- // Перечислить всех пользователей с их ролями и хранилищами
- // к которым они имеют доступ.
- //===============================================================
- public static void PrintUserInfo()
- {
- try
- {
- using (MyVaultServiceManager mgr = new MyVaultServiceManager(
- MyVaultServiceManager.Mode.ReadOnly))
- {
- // Метод GetAllUsers предоставляет всю пользовательскую информацию
- //-----------------------------------------------------
- User[] users = mgr.Services.AdminService.GetAllUsers();
- // Мы отобразим эту информацию в простом окне сообщения
- string msg = "";
- foreach (User user in users)
- {
- UserInfo userInfo =
- mgr.Services.AdminService.GetUserInfoByUserId(user.Id);
- msg += user.Name + "\n----------------";
- if (userInfo.Roles != null && userInfo.Roles.Length > 0)
- {
- msg += "\n Роли:";
- foreach (Role role in userInfo.Roles)
- {
- msg += "\n\tId: " + role.Id
- + «.\tИмя: " + role.Name;
- }
- }
- if (userInfo.Vaults != null && userInfo.Vaults.Length >0)
- {
- msg += "\n Хранилища:";
- foreach (KnowledgeVault vault in userInfo.Vaults)
- {
- msg += "\n\tId: " + vault.Id
- + «.\tИмя: " + vault.Name;
- }
- }
- msg += "\n================================\n";
- }
- MessageBox.Show( msg, "Завершено!");
- } // using
- }
- catch (System.Exception err)
- {
- MessageBox.Show(err.Message);
- }
- } // PrintUserInfo()
- } // class AdminSample
- } // 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