Wednesday, December 18, 2013

Check if the User has permission on the document (ViewPermission) ClientContext

 /// <summary>
        /// Check if the User has permission on the document (ViewPermission)
        /// </summary>
        /// <returns></returns>
        public bool DoesUserCanRead(string userLogin, string listId, string itemId, string siteUrl, string webId)
        {
            Logger.writeToLogFile(Constants.MSearch, "DoesUserCanRead Start", Logger.LogLevel.LOG);
            bool CheckPermission = false;
            try
            {
                Guid Listitemid = new Guid(listId);

                Guid WebId = new Guid(webId);

                int ITEMID = Convert.ToInt32(itemId);


                ClientContext clientContext = new ClientContext(siteUrl);
                Microsoft.SharePoint.Client.ListItem item = clientContext.Site.OpenWebById(WebId).Lists.GetById(Listitemid).GetItemById(ITEMID);
                clientContext.Load(item);
                clientContext.ExecuteQuery();

                User usr = clientContext.Web.EnsureUser(userLogin);
                clientContext.Load(usr);
                clientContext.ExecuteQuery();

                ClientResult<BasePermissions> result = item.GetUserEffectivePermissions(usr.LoginName);
                clientContext.ExecuteQuery();

                CheckPermission = result.Value.Has(PermissionKind.ViewListItems);
            }
            catch (Exception ex)
            {
                Logger.writeToLogFile("MSearch", ex.Message.ToString(), "DoesUserCanRead", userLogin, Logger.LogLevel.ERROR);

                Response.Redirect("~/CGIError.aspx", true);
            }
         

            return CheckPermission;
        }

1 comment: