We faced a situation when we have to elevate the read only users permission to add/update the list items in SharePoint list. To accomplish this we usually go for the RunWithElevatedPriviledges delegate, but the only disadvantage of this approach is if we add/update any item within this delegate, it will save that record with 'System Account' identity.
Following code can be used to overwrite the 'System Account' identity with current user's identity, So list item will display 'Created By' or 'Modified By' columns value as current user.
SPUser user = SPContext.Current.Web.CurrentUser;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site
= new SPSite(SPContext.Current.Web.Url))
{
using (SPWeb web =
site.OpenWeb())
{
web.AllowUnsafeUpdates = true;
SPList list = web.Lists["TempList"];
SPListItem listItem = list.AddItem();
listItem["Title"] = string.Format("Hey
{0}", user.LoginName);
listItem["Editor"] =
user; //
Modified By
listItem["Author"] =
user; //
Created By
listItem.Update();
web.AllowUnsafeUpdates = false;
}
}
});
No comments:
Post a Comment