Here is the best way to evaluate if a user can view a list. I had many problems with a web part and after investigations, this method resolve the problems.
Read the comments in the code to learn more about it!
Code:
| public bool UserCanViewListItems(SPWeb web, SPList list) | |
| { | |
| bool res = true; | |
| SPWeb myweb = null; | |
| SPSite mysite = null; | |
| try | |
| { | |
| /* There is a kind of ownership problem related to the DoesUserHavePermissions. | |
| * To fix that problem, the user performing the execution of the method, needs to | |
|
|
* be the same as the one who created the Parent Object. For this reason, This |
|
|
* Method use the List object received in param and recreate the Parent object to |
|
|
* get the ownership. And it works perfectly.*/ |
|
|
mysite = new SPSite(list.ParentWeb.Url); |
|
|
myweb = mysite.OpenWeb(); |
|
|
list = myweb.Lists[list.Title]; |
|
|
list.Permissions.DoesUserHavePermissions(SPRights.ViewListItems); |
|
|
} |
|
|
catch(Exception) |
|
|
{ |
|
|
res = false; |
|
|
} |
|
|
finally |
|
|
{ |
|
|
if(myweb!=null) |
|
|
myweb.Dispose(); |
|
|
if(mysite!=null) |
|
|
mysite.Dispose(); |
|
|
} |
|
|
return res; |
|
|
} |