c# - How to create an event receiver change permisions on file added sharepoint 2013 -


i have library ("documents") want add event receiver remove permisions on item added. tryed multiple ways i'm not experimented , can't figure i'm wrong. following code managed breakinheritance, didn't managed remove assignmets , add 1 new.

public override void itemadded(spitemeventproperties properties)     {         base.itemadded(properties);         if (properties.listtitle.equals("documents"))          need on one.{             using (spsite site = new spsite(properties.weburl))             {                 site.allowunsafeupdates = true;                 using (spweb web = site.openweb())                 {                     spuser user = web.currentuser;                     spsecurity.runwithelevatedprivileges(delegate()                     {                         try                         {                             web.allowunsafeupdates = true;                             splistitem li = properties.listitem;                             spfile lf = web.getfile(li.url);                              sproletype read = sproletype.guest;                             lf.item.breakroleinheritance(true);                             while (lf.item.roleassignments.count > 0)                             {                                 lf.item.roleassignments.remove(0);                             }                             assignpermissionstoitem(lf.item, user, read);                             web.allowunsafeupdates = false;                          }                          catch (exception ex)                         {                         }                      });                 }             }         }     }      public static void assignpermissionstoitem(splistitem item, spprincipal obj, sproletype roletype)     {         if (!item.hasuniqueroleassignments)         {             item.breakroleinheritance(true);         }          sproleassignment roleassignment = new sproleassignment(obj);         sproledefinition roledefinition = item.web.roledefinitions.getbytype(roletype);         roleassignment.roledefinitionbindings.add(roledefinition);          item.roleassignments.add(roleassignment);     } 

first of all, need instantiate new spsite , spweb objects inside spsecurity.runwithelevatedprivileges (link).

second, if want remove rights, should call splistitem.breakroleinheritance false argument. in case, item have no rights. , can add whatever rights need.

and personal advice - should never use empty catch-block. send error message ups logging service, it's easy helpful.


Comments

Popular posts from this blog

Unable to remove the www from url on https using .htaccess -