Exemple #1
0
 // Group-specific capability
 public GroupCapability(CapabilityMode mode)
 {
     Name  = "Group";
     Value = 1;
     Type  = CapabilityType.Control;
     Mode  = mode;
 }
 public AccountCapability(CapabilityMode mode)
 {
     Name  = "Account";
     Value = 2;
     Type  = CapabilityType.Control;
     Mode  = mode;
 }
Exemple #3
0
 public DialogCapability(CapabilityMode mode)
 {
     Name  = "Dialog";
     Value = 0;
     Type  = CapabilityType.View;
     Mode  = mode;
 }
 /// <summary>
 /// <see cref="ITableauPermissionService.DeleteDefaultCapabilityAsync"/>
 /// </summary>
 public async Task DeleteDefaultCapabilityAsync(
     string projectId,
     ResourceType resourceType,
     GranteeType granteeType,
     string granteeId,
     CapabilityName capabilityName,
     CapabilityMode capabilityMode
     )
 {
     await DeleteDefaultPermissionAsync(
         projectId,
         resourceType,
         BuildDefaultPermission(granteeType, granteeId, capabilityName, capabilityMode)
         ).ConfigureAwait(false);
 }
 /// <summary>
 /// <see cref="ITableauPermissionService.AddDefaultCapabilityAsync"/>
 /// </summary>
 public async Task <TableauPermission> AddDefaultCapabilityAsync(
     string projectId,
     ResourceType resourceType,
     GranteeType granteeType,
     string granteeId,
     CapabilityName capabilityName,
     CapabilityMode capabilityMode
     )
 {
     return(await AddDefaultPermissionAsync(
                projectId,
                resourceType,
                BuildDefaultPermission(granteeType, granteeId, capabilityName, capabilityMode)
                ).ConfigureAwait(false));
 }
        /// <summary>
        /// Build permission for specified resource (e.g. datasource, project, workbook), user/group, and capability
        /// </summary>
        /// <param name="granteeType"></param>
        /// <param name="granteeId"></param>
        /// <param name="capabilityName"></param>
        /// <param name="capabilityMode"></param>
        public static TableauPermission BuildDefaultPermission(
            GranteeType granteeType,
            string granteeId,
            CapabilityName capabilityName,
            CapabilityMode capabilityMode
            )
        {
            var permission = new TableauPermission();

            var granteeCapabilities = new TableauGranteeCapabilities();

            switch (granteeType)
            {
            case GranteeType.Group:
                granteeCapabilities.Group = new TableauGroup()
                {
                    Id = granteeId
                };
                break;

            case GranteeType.User:
                granteeCapabilities.User = new TableauUser()
                {
                    Id = granteeId
                };
                break;

            default:
                throw new Exception("Unsupported user/group type");
            }
            granteeCapabilities.Capabilities = new TableauCapabilities()
            {
                Capability = new TableauCapability[] {
                    new TableauCapability()
                    {
                        Name = capabilityName.ToString(),
                        Mode = capabilityMode.ToString()
                    }
                }
            };

            permission.GranteeCapabilities = new TableauGranteeCapabilities[] { granteeCapabilities };

            return(permission);
        }
 /// <summary>
 /// <see cref="ITableauPermissionService.DeleteCapabilityAsync"/>
 /// </summary>
 public async Task DeleteCapabilityAsync(
     ResourceType resourceType,
     string resourceId,
     GranteeType userGroupType,
     string userGroupId,
     CapabilityName capabilityName,
     CapabilityMode capabilityMode
     )
 {
     await DeletePermissionAsync(
         BuildPermission(
             resourceType,
             resourceId,
             userGroupType,
             userGroupId,
             capabilityName,
             capabilityMode
             )
         ).ConfigureAwait(false);
 }
 /// <summary>
 /// <see cref="ITableauPermissionService.AddCapabilityAsync"/>
 /// </summary>
 public async Task <TableauPermission> AddCapabilityAsync(
     ResourceType resourceType,
     string resourceId,
     GranteeType userGroupType,
     string userGroupId,
     CapabilityName capabilityName,
     CapabilityMode capabilityMode
     )
 {
     return(await AddPermissionAsync(
                BuildPermission(
                    resourceType,
                    resourceId,
                    userGroupType,
                    userGroupId,
                    capabilityName,
                    capabilityMode
                    )
                ).ConfigureAwait(false));
 }
        /// <summary>
        /// Build permission for specified resource (e.g. datasource, project, workbook), user/group, and capability
        /// </summary>
        /// <param name="resourceType"></param>
        /// <param name="resourceId"></param>
        /// <param name="granteeType"></param>
        /// <param name="granteeId"></param>
        /// <param name="capabilityName"></param>
        /// <param name="capabilityMode"></param>
        public static TableauPermission BuildPermission(
            ResourceType resourceType,
            string resourceId,
            GranteeType granteeType,
            string granteeId,
            CapabilityName capabilityName,
            CapabilityMode capabilityMode
            )
        {
            var permission = BuildDefaultPermission(granteeType, granteeId, capabilityName, capabilityMode);

            switch (resourceType)
            {
            case ResourceType.Datasource:
                permission.Datasource = new TableauDatasource()
                {
                    Id = resourceId
                };
                break;

            case ResourceType.Project:
                permission.Project = new TableauProject()
                {
                    Id = resourceId
                };
                break;

            case ResourceType.Workbook:
                permission.Workbook = new TableauWorkbook()
                {
                    Id = resourceId
                };
                break;

            default:
                // default permission
                break;
            }

            return(permission);
        }