London Dev Meetup Rescheduled! Due to unavoidable reasons, the event has been moved to 21st May. Speakers remain the same—any changes will be communicated. Seats are limited—register here to secure your spot!

Access rights

Vote:
 

Is there a way to filter a search result based on a specific user's access rights?

I have found this which filters based on 1 group:

.Filter(x => x.RolesWithReadAccess().Match("Everyone"))

What I need is to filter on multiple groups (all groups that the current users has) like:

.Filter(x => x.RolesWithReadAccess().MatchAny( new string[] { "Everyone", "Usergroup1", "Usergroup2" } ))

#63954
Dec 05, 2012 13:32
Vote:
 

I found the solution:

var pageAccessFilter = EPiServer.Find.SearchClient.Instance.BuildFilter<PageType>();
List<string> userRoles = Roles.GetRolesForUser().ToList();
userRoles.Add( "Everyone" );

foreach( string role in userRoles )
      pageAccessFilter = pageAccessFilter.Or( x => x.RolesWithReadAccess().Match( role ) );

.Filter( pageAccessFilter )

#63965
Dec 05, 2012 15:33
Vote:
 

Hi,

Looks good. I just want to add for future reference that the CMS 7 integration has quite a lot of functionality built in for filtering by publication status and access rights. Most significantly the FilterForVisitor methods.

#64045
Dec 08, 2012 11:06
This topic was created over six months ago and has been resolved. If you have a similar question, please create a new topic and refer to this one.
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.