User post-registration script example
This is an example of a User post-registration script to be executed after a new user is registered to Sitecore Content Hub. It adds the user to a specific user group if the external provider is Google.
Use case
-
A new user is registered.
-
The script checks if the provider is Google. In that case, the user is added to the Google user group.
Script
using System.Linq;
if (Context.ExternalUserInfo?.Provider != "Google") return;
var query = Query.CreateQuery(entities =>
from e in entities
where e.DefinitionName == "Usergroup" && e.Property("GroupName") == "Google"
select e);
var googleGroupId = await MClient.Querying.SingleIdAsync(query);
if (!googleGroupId.HasValue) throw new InvalidOperationException("Google usergroup not found.");
var relation = await Context.User.GetRelationAsync<IChildToManyParentsRelation>("UserGroupToUser");
relation.Parents.Add(googleGroupId.Value);
await MClient.Entities.SaveAsync(Context.User);
Script explanation
-
Include the libraries to be used in the script.
RequestResponseusing System.Linq;
-
Check the external user provider. only the 'Google' provider is of interest.
RequestResponseif (Context.ExternalUserInfo?.Provider != "Google") return;
-
Create a query that get the Google user group.
RequestResponsevar query = Query.CreateQuery(entities => from e in entities where e.DefinitionName == "Usergroup" && e.Property("GroupName") == "Google" select e);
-
Execute the query to get the Google group ID.
RequestResponsevar googleGroupId = await MClient.Querying.SingleIdAsync(query);
-
If the user group cannot be found, throw an
InvalidOperationException
.RequestResponseif (!googleGroupId.HasValue) throw new InvalidOperationException("Google usergroup not found.");
-
Get the user's user group relation.
RequestResponsevar relation = await Context.User.GetRelationAsync<IChildToManyParentsRelation>("UserGroupToUser");
-
Add the Google group to the user's object via the user group relation.
RequestResponserelation.Parents.Add(googleGroupId.Value);
-
Save the user entity.
RequestResponseawait MClient.Entities.SaveAsync(Context.User);
Setup
-
Create a user group called "Google".
-
Create, publish and enable the User post-registration script with the source code above.