zoukankan      html  css  js  c++  java
  • Managing Tasks Permissions Programmatically within SharePoint using event reciever or using special permissions property

    I was writing a workflow using SharePoint designer wherein at certain steps tasks were getting created and assigned to different user. But the problem with that was that any user having appropriate rights on the tasks list was able to edit the task.

    Below are the two methods using which we can have only the assigned to user having the rights on that task.

    It can be done using Event Receiver or within the SharePoint workflow using special permissions property.

    public override void ItemAdded(SPItemEventProperties properties)

            {

                    // Name of the List

                if (properties.ListTitle == “Tasks”)

                {     

                    // Get the SPSite Object

                    SPSite objSite = new SPSite(“http://servername:portname”);       

                    // Point to the top level web site within it

                    SPWeb objWeb = objSite.OpenWeb();

                    // get the task list item getting created

                    SPListItem myListItem = properties.ListItem;       

                    // get the id of the assigned to user

                    // we want that only assigned to user should have full rights on that task

                    string userAssignedTo=myListItem["Assigned To"].ToString();

                    int index = userAssignedTo.IndexOf(‘;’);

                    int id = Int32.Parse(userAssignedTo.Substring(0, index));

                    // get the SPUser from the id

                    SPUser user = objWeb.SiteUsers.GetByID(id);                       

                    // break the role inheritance

                    myListItem.BreakRoleInheritance(false);

                    // webroledefinitions – Full Right, Design, Contribute and Read

                    SPRoleDefinitionCollection webroledefinitions = objWeb.RoleDefinitions;

                    SPRoleAssignment roleassignment = new SPRoleAssignment(user);              

                    roleassignment.RoleDefinitionBindings.Add(webroledefinitions["Full Control"]);

                    myListItem.RoleAssignments.Add(roleassignment);

                    // give full control right to the assigned to user

                    roleassignment.Update();                           

                   }

                }

    Or within workflow as

        // handler for create task activity

            private void createTask1_MethodInvoking(object sender, EventArgs e)

            {

                //Specify properties for the task

                createTask1.TaskProperties.AssignedTo = @”domainusername”;

                createTask1.TaskProperties.Title = @”Please complete the task”;

                createTask1.TaskProperties.Description = “This is sample SharePoint Task”;

                createTask1.TaskProperties.DueDate = DateTime.Now.AddDays(7);

                createTask1.TaskProperties.EmailBody = “This is the sample<b><i> email body </b></i>”;

                createTask1.TaskProperties.SendEmailNotification = true;

                // Define a HybridDictionary object

                HybridDictionary permsCollection = new HybridDictionary();

                // Give Administrator rights to the user to whom the task has been assigned

                permsCollection.Add(createTask1.TaskProperties.AssignedTo, SPRoleType.Administrator);

                // SpecialPermissions -the SpecialPermissions property  in your code will strip out all existing permissions inherited from

                // the parent list(Workflow Task List) and only adds permissions for each pair you added to the hashtable

                createTask1.SpecialPermissions = permsCollection;   

            }

  • 相关阅读:
    JS实现checkbox全选功能
    JS回车检索
    MockServer 之postman
    Locust性能测试
    Bitter.Core系列二:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 之数据库连接
    MSSQL 经典语句查看表字典结构语句
    使用 Path.Combine 构建跨平台文件路径拼接
    迁移备份WSL2下的子系统/迁移Windows 10 Docker Data目录/踩坑记录
    MSSQL 20212 高可用集群方案2012的AlwaysOn高性能组件
    MSSQL 经典SQL 语句WITH递归
  • 原文地址:https://www.cnblogs.com/icedog/p/1776894.html
Copyright © 2011-2022 走看看