Security.CreateCategories(SecurityCategoriesDataSet) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Cria uma ou mais categorias de segurança.
public:
void CreateCategories(WebSvcSecurity::SecurityCategoriesDataSet ^ categories);
[System.Web.Services.Protocols.SoapDocumentMethod("http://schemas.microsoft.com/office/project/server/webservices/Security/CreateCategories", ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped, RequestNamespace="http://schemas.microsoft.com/office/project/server/webservices/Security/", ResponseNamespace="http://schemas.microsoft.com/office/project/server/webservices/Security/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
public void CreateCategories(WebSvcSecurity.SecurityCategoriesDataSet categories);
member this.CreateCategories : WebSvcSecurity.SecurityCategoriesDataSet -> unit
Public Sub CreateCategories (categories As SecurityCategoriesDataSet)
Parâmetros
- categories
- SecurityCategoriesDataSet
Contém as informações sobre uma ou mais categorias de segurança.
- Atributos
Exemplos
O exemplo a seguir chama CreateCategories para criar duas categorias de segurança especificadas no SecurityCategoriesDataSetmultiCategoryDs.
Para obter informações adicionais e um aplicativo de exemplo completo que cria uma categoria de segurança com um grupo, consulte Usando métodos de segurança no PSIresourceGuid. Depois de executar o aplicativo, abra a página Gerenciar Categorias no Project Web App e clique em Testar Categoria 1 e Testar Categoria 2 para ver os resultados.
/*
* 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);
Comentários
O categories parâmetro deve conter pelo menos um SecurityCategoriesDataSet.SecurityCategoriesRow que define uma nova categoria. O SecurityCategoriesDataTable pode conter vários objetos SecurityCategoriesRow . O Project Server valida cada SecurityCategoriesRow para o seguinte:
- Nome da categoria exclusivo e GUID
- Existência de usuários e grupos (se houver) que tenham a permissão de categoria
- Existência de projetos (se houver) na categoria
- Existência de recursos (se houver) na categoria
Há sete objetos DataTable em um SecurityCatagoriesDataSet. Somente o SecurityCategoriesDataTable deve conter dados. As tabelas de dados estão em ordem, da seguinte maneira:
- SecurityCategories Cada linha especifica a categoria GUID, nome e descrição. Somente o GUID e o nome (WSEC_CAT_UID e WSEC_CAT_NAME) são necessários para criar uma categoria de segurança.
- UserRelations Opcional. Cada linha especifica a categoria GUID e o GUID do recurso.
- GroupRelations Opcional. Especifica a categoria GUID e o guid do grupo.
- UserPermissions Opcional. Cada linha especifica a categoria GUID, guid de recurso e permissão e define Permitir ou Negar para a permissão.
- GroupPermissions Opcional. Cada linha especifica a categoria GUID, guid de grupo e permissão e define Permitir ou Negar para a permissão.
- SecurityCategoryObjects Opcional. Cada linha especifica a categoria GUID, o tipo de objeto (projeto ou recurso) e o GUID do objeto.
- SecurityCategoryRules Opcional. Cada linha especifica a categoria GUID, o tipo de objeto (projeto ou recurso) e o tipo de regra. Para obter informações sobre as enumerações de regra, consulte ProjectSecurityRules e ResourceSecurityRules.
Para obter exemplos de categorias válidas, clique em uma categoria na página Gerenciar Categorias no Project Web App, para ver os campos e as configurações na página Adicionar ou Editar Categoria.
Permissões do Project Server
| ManageSecurity | Permite que um usuário gerencie a segurança do Project Server. Permissão global. |