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;   

            }

  • 相关阅读:
    浅谈Eclipse中maven的搭建
    sdk的相关知识以及浅谈手机模拟自动化
    java开发环境搭建
    Python学习————反序列化器(复习)
    Python学习————序列化器(复习)
    Python学习————jwt
    Python学习————对称加密和非对称加密
    Python学习————drf(七)
    Python学习————集群和分布式
    Python学习————drf(六)
  • 原文地址:https://www.cnblogs.com/icedog/p/1776894.html
Copyright © 2011-2022 走看看