In today's guide, you will learn how to check if a user matches a segment within Episerver CMS. In Episerver terminology, this means making sure the criteria of a visitor group has been met. In order to do this check, we will be using a combination of the
IVisitorGroupRepository and the
VisitorGroupHelper. If you haven't come across this API yet, I would recommend reading this first. If you are planning on adding personalisation to your Episerver website, this is the article for you 🔥🔥🔥
In order to check if the current request matches a visitor group, you can use the
VisitorGroupHelper has not been built against an
interface. Due to this limitation,
VisitorGroupHelper can not be used with dependency injection. This means unit testing any code that uses this API will be a little bit harder. If you want to test your code, I would recommend creating a very basic wrapper for the class before you start using it in anger throughout your codebase.
VisitorGroupHelper only ships with one method,
IsPrincipalInGroup() which takes in an
IPrincipleand a role. This is why wrapping it isn't too painful and can be done in less than 10 minutes.
VisitorGroupHelper the role needs to match the visitor group name, so for example if your visitor group is called
Example Visitor Group that is what you would need to pass in.
The code is shown below:
Getting Visitor Groups From Episerver
To check if a user matches on a visitor group, you will need to get access to all the visitor groups contained within the CMS. This is where
IVisitorGroupRepository comes into play:
On-Line 3, I access the API using the
ServiceLocator anti-pattern. I only access the API this way to make this snippet easy to understand (use construction injection in production ✔️). On Line 6, we load the visitor group we are interested in from the CMS. In this example, I query the CMS for the visitor group using a GUID. You can get this information within the editor by loading the group in the editor and looking at the URL. A less hard-coded approach would be to get all of the groups defined with the CMS, using the
List() method, and checking the user matches all of them. In my example, I'm using the code from How To Create A Visitor Group Selection Factory to store the
That's all you need to know to start checking your site visitors matches a segment. Happy Coding 🤘