Partager via


Security.CreateCategories - Méthode

Crée une ou plusieurs catégories de sécurité.

Espace de noms :  WebSvcSecurity
Assembly :  ProjectServerServices (dans ProjectServerServices.dll)

Syntaxe

'Déclaration
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Security/CreateCategories", RequestNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Security/",  _
    ResponseNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Security/",  _
    Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Sub CreateCategories ( _
    categories As SecurityCategoriesDataSet _
)
'Utilisation
Dim instance As Security
Dim categories As SecurityCategoriesDataSet

instance.CreateCategories(categories)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Security/CreateCategories", RequestNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Security/", 
    ResponseNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Security/", 
    Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public void CreateCategories(
    SecurityCategoriesDataSet categories
)

Paramètres

Remarques

Le paramètre categories doit contenir au moins un SecurityCategoriesDataSet.SecurityCategoriesRow qui définit une nouvelle catégorie. Le SecurityCategoriesDataTable peut contenir plusieurs objets de SecurityCategoriesRow . Project Server valide chaque SecurityCategoriesRow pour les éléments suivants :

  • Nom de catégorie unique et le GUID

  • Existence des utilisateurs et groupes (le cas échéant) qui ont l'autorisation de catégorie

  • Existence des projets (le cas échéant) dans la catégorie

  • Existence des ressources (le cas échéant) dans la catégorie

Il existe sept objets DataTable dans un SecurityCatagoriesDataSet. Uniquement la SecurityCategoriesDataTable doit contenir des données. Les tables de données sont dans l'ordre, comme suit :

  1. SecurityCategories   Chaque ligne spécifie le GUID de catégorie, le nom et la description. Uniquement le GUID et le nom (WSEC_CAT_UID et WSEC_CAT_NAME) sont requis pour créer une catégorie de sécurité.

  2. UserRelations   Facultatif. Chaque ligne spécifie le GUID de catégorie et le GUID de ressource.

  3. GroupRelations   Facultatif. Spécifie le GUID de catégorie et le GUID du groupe.

  4. Objets UserPermission   Facultatif. Chaque ligne spécifie le GUID de catégorie, GUID de ressource et d'autorisation et définit Allow ou Deny pour l'autorisation.

  5. GroupPermissions   Facultatif. Chaque ligne spécifie le GUID de catégorie, GUID de groupe et d'autorisation et définit Allow ou Deny pour l'autorisation.

  6. SecurityCategoryObjects   Facultatif. Chaque ligne spécifie le GUID de catégorie, le type d'objet (projet ou une ressource) et le GUID de l'objet.

  7. SecurityCategoryRules   Facultatif. Chaque ligne spécifie le GUID de catégorie, type d'objet (projet ou une ressource) et type de règle. Pour plus d'informations sur les énumérations de règle, voir ProjectSecurityRules et ResourceSecurityRules.

Pour obtenir des exemples de catégories valides, cliquez sur une catégorie dans la page Gérer les catégories dans Project Web App, pour afficher les champs et les paramètres sur la page Ajouter ou modifier une catégorie.

Autorisations Project Server

Autorisation

Description

ManageSecurity

Permet à un utilisateur de gérer la sécurité de Project Server. Autorisation globale.

Exemples

L'exemple suivant appelle CreateCategories pour créer deux catégories de sécurité qui sont spécifiés dans le SecurityCategoriesDataSetmultiCategoryDs.

Pour plus d'informations et un exemple d'application complète qui crée une catégorie de sécurité avec un groupe, reportez-vous à l'aide des méthodes de sécurité dans l'interface PSI. Vous pouvez ajouter le code suivant à l'exemple d'application et modifiez la valeur de resourceGuid. Après avoir exécuté l'application, ouvrez la page Gérer les catégories dans Project Web App, puis cliquez sur Test de catégorie 1 et 2 de catégorie de Test pour afficher les résultats.

/* 
 * Add this code to the sample code in the article
 * Using Security Methods in the PSI.
 */

// Set the GUID for an existing resource.
Guid resourceUid = new Guid("a1fcbf91-e91d-44e2-a4a7-3b4b698cb984");

Guid category1Guid = Guid.NewGuid();
Guid category2Guid = Guid.NewGuid();

SvcSecurity.SecurityCategoriesDataSet multiCategoryDs =
   new SvcSecurity.SecurityCategoriesDataSet();
SvcSecurity.SecurityCategoriesDataSet.SecurityCategoriesRow category1Row =
   multiCategoryDs.SecurityCategories.NewSecurityCategoriesRow();
SvcSecurity.SecurityCategoriesDataSet.SecurityCategoriesRow category2Row =
   multiCategoryDs.SecurityCategories.NewSecurityCategoriesRow();

category1Row.WSEC_CAT_UID = category1Guid;
category1Row.WSEC_CAT_NAME = "Test Category 1";
category1Row.WSEC_CAT_DESC = "This is test category 1.";
multiCategoryDs.SecurityCategories.AddSecurityCategoriesRow(category1Row);

category2Row.WSEC_CAT_UID = category2Guid;
category2Row.WSEC_CAT_NAME = "Test Category 2";
category2Row.WSEC_CAT_DESC = "This is test category 2.";
multiCategoryDs.SecurityCategories.AddSecurityCategoriesRow(category2Row);

// (Optional) Add a user to category 1.
SvcSecurity.SecurityCategoriesDataSet.UserRelationsRow userRelationsRow =
   multiCategoryDs.UserRelations.NewUserRelationsRow();
userRelationsRow.WSEC_CAT_UID = category1Guid;
// Change the following GUID to a resource that is on your system.
Guid existingResUid = new Guid("88979803-2230-48b4-b23b-4af0e4a40392");
userRelationsRow.RES_UID = existingResUid;
multiCategoryDs.UserRelations.AddUserRelationsRow(userRelationsRow);

// (Optional) Specify the permissions for the user on category 1.
SvcSecurity.SecurityCategoriesDataSet.UserPermissionsRow userPermRow =
   multiCategoryDs.UserPermissions.NewUserPermissionsRow();
userPermRow.WSEC_CAT_UID = category1Guid;
userPermRow.RES_UID = existingResUid;
userPermRow.WSEC_ALLOW = true;

// For example, add the "Open Project" permission.
userPermRow.WSEC_FEA_ACT_UID = PSLibrary.PSSecurityCategoryPermission.OpenProject;
multiCategoryDs.UserPermissions.AddUserPermissionsRow(userPermRow);

// (Optional) Add an object (project or resource) to category 2.
SvcSecurity.SecurityCategoriesDataSet.SecurityCategoryObjectsRow category2ObjectRow =
   multiCategoryDs.SecurityCategoryObjects.NewSecurityCategoryObjectsRow();
category2ObjectRow.WSEC_CAT_UID = category2Guid;
category2ObjectRow.WSEC_OBJ_TYPE_UID = PSLibrary.PSSecurityObjectType.Project;

// Add an existing project to category 2. 
// Change the following GUID to a project that is on your system.
category2ObjectRow.WSEC_OBJ_UID = new Guid("BC323C21-B7E4-4631-AF99-C44E5C52BA4E");
multiCategoryDs.SecurityCategoryObjects.AddSecurityCategoryObjectsRow(category2ObjectRow);

// (Optional) Set some dynamic rules on category 2.
SvcSecurity.SecurityCategoriesDataSet.SecurityCategoryRulesRow category2RulesRow1 =
   multiCategoryDs.SecurityCategoryRules.NewSecurityCategoryRulesRow();
category2RulesRow1.WSEC_CAT_UID = category2Guid;
category2RulesRow1.WSEC_OBJ_TYPE_UID = PSLibrary.PSSecurityObjectType.Project;
category2RulesRow1.WSEC_OBJ_RULE_TYPE = (int)PSLibrary.ProjectSecurityRules.OwnerAtSameRbsNode;
multiCategoryDs.SecurityCategoryRules.AddSecurityCategoryRulesRow(category2RulesRow1);

SvcSecurity.SecurityCategoriesDataSet.SecurityCategoryRulesRow category2RulesRow2 =
   multiCategoryDs.SecurityCategoryRules.NewSecurityCategoryRulesRow();
category2RulesRow2.WSEC_CAT_UID = category2Guid;
category2RulesRow2.WSEC_OBJ_TYPE_UID = PSLibrary.PSSecurityObjectType.Project;
category2RulesRow2.WSEC_OBJ_RULE_TYPE = (int)PSLibrary.ProjectSecurityRules.AllCurrentAndFuture;
multiCategoryDs.SecurityCategoryRules.AddSecurityCategoryRulesRow(category2RulesRow2);

SvcSecurity.SecurityCategoriesDataSet.SecurityCategoryRulesRow category2RulesRow3 =
   multiCategoryDs.SecurityCategoryRules.NewSecurityCategoryRulesRow();
category2RulesRow3.WSEC_CAT_UID = category2Guid;
category2RulesRow3.WSEC_OBJ_TYPE_UID = PSLibrary.PSSecurityObjectType.Project;
category2RulesRow3.WSEC_OBJ_RULE_TYPE = (int)PSLibrary.ProjectSecurityRules.ManagedByUser;
multiCategoryDs.SecurityCategoryRules.AddSecurityCategoryRulesRow(category2RulesRow3);

security.CreateCategories(multiCategoryDs);

Voir aussi

Référence

Security classe

Security - Membres

WebSvcSecurity - Espace de noms

Autres ressources

À l'aide des méthodes de sécurité dans l'interface PSI