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

06/12/2013

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

Вопрос

Существует ли способ программно добавить пользователей в сервер Vault?

Решение

Да, в Vault API вы легко можете создать нового пользователя, используя класс Autodesk.Connectivity.WebServices.AdminService.

Я добавлю новый метод к классу AdminSample, который работал в этой статье: Vault API: Пользователи и роли, часть 1 и Vault API: Пользователи и роли, часть 2.

Прошу прощения за то что данные пользователя введены жестко, но надеюсь, что в целях демонстрации этого будет достаточно. Кроме того, нам потребуется назначить какие-либо роли и хранилища новому пользователю, это потребует получение ID соответствующих объектов.

Вот наш новый метод, который называется AddUser():

Код - C#: [Выделить]
  1. // Добавить нового пользователя.
  2. // Пусть это будет роль «Администратор» и подключение
  3. //   к хранилищу 'MaratVault'.
  4. //===============================================================
  5. public static void AddUser()
  6. {
  7.   using (MyVaultServiceManager mgr = new MyVaultServiceManager(
  8.                            MyVaultServiceManager.Mode.ReadWrite))
  9.   {
  10.     try
  11.     {
  12.       // Давайте найдем роль «Администратор»
  13.       //------------------------------------------------------
  14.       Role[] roles = mgr.Services.AdminService.GetAllRoles();
  15.       Role admin = FindRole(roles, "Администратор");
  16.       if( admin == null )
  17.       {
  18.         MessageBox.Show("FindRole() завершилось сбоем.");
  19.         return;
  20.       }
  21.       long[] roleIdArray = new long[] { admin.Id };
  22.       // Я хочу предоставить доступ пользователю к хранилищу
  23.       //   "MaratVault". Для этого необходимо найти Id этого хранилища:
  24.       //---------------------------------------------------------
  25.       KnowledgeVault vault = mgr.Services.KnowledgeVaultService.
  26.                            GetKnowledgeVaultByName("MaratVault");
  27.       long[] vaultIdArray = new long[] { vault.Id };
  28.        // Теперь создадим нового пользователя
  29.       //---------------------------------------------------------
  30.       User newUser = mgr.Services.AdminService.AddUser(
  31.           "MaratM",      // имя пользователя
  32.           "123456",      // пароль
  33.           AuthTyp.Vault, // проверка подлинности - не Active Directory
  34.           "Marat",       // имя
  35.           "Mirgaleev",   // фамилия
  36.           "email",       // адрес электронной почты
  37.           true,          // активный
  38.           roleIdArray,   // роли
  39.           vaultIdArray); // хранилища
  40.     }
  41.     catch (System.Exception err)
  42.     {
  43.       MessageBox.Show(«Возможно, конфликт имени пользователя.\n"
  44.                     + «Имя этого пользователя уже существует.\n\n"
  45.                     + err.ToString(), «Ошибка");
  46.     } // try
  47.   } // using
  48. } // AddUser()

Вы могли заметить, что мы подключаемся к хранилищу в режиме «Чтение и запись» только в том случае, если требуется изменить или добавить какую-либо информацию.

Давайте проверим работоспособность:

 

Хорошо, получилось! И это было не слишком трудно.

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

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

Опубликовано 06.12.2013
Отредактировано 10.12.2013 в 14:31:36