How to get the Target Audience Groups of Logged-In User Programmatically in SharePoint 2013

Sathish Nadarajan
 
Solution Architect
April 18, 2015
 
Rate this article
 
Views
12669

In one of the requirement, I need to frame the Search Query based on the Target Audience Groups the current user belongs to. To achieve that, I had come up with the below method.

 public static string GetCurrentUserAudienceGroup(string publishingSiteURL, string loginName)
  {
  AcenetLogger.LogMessage("Entering into the Method GetCurrentUserAudienceGroup", "CommonHelper", null);
  string audienceGroups = string.Empty;
  try
  {
  SPSecurity.RunWithElevatedPrivileges(delegate()
  {
  using (SPSite site = new SPSite(publishingSiteURL))
  {
  SPWeb web = site.RootWeb;
 
  Microsoft.Office.Server.ServerContext context = Microsoft.Office.Server.ServerContext.GetContext(site);
  AudienceManager audManager = new AudienceManager(context);
  AudienceCollection audiences = audManager.Audiences;
 
  for (int i = 0; i < audiences.Count; i++)
  {
  if (audiences[i].IsMember(loginName))
  {
  audienceGroups = audienceGroups + "," + audiences[i].AudienceID;
  }
  }
 
  }
  });
  }
  catch (Exception ex)
  {
  Logger.LogException("Error has occured On the Method”);
  audienceGroups = string.Empty;
  }
  return audienceGroups.TrimStart(',');
  }
 

The method is very much self-explanatory. Even then, the pseudo code as follows.

· With the elevated previleges, get the SP Site object

· Get the Server Context object by using the site Object

· With the Context object, instantiate the AudienceManager Object

· With that, get the Audiences.

· Iterate through the Audiences groups and make sure that the current Logon User is a Member.

Here, even I thought of eliminating the ‘for’ loop. But I could not find out any other optimum way.

Hope this helps…

Happy Coding,

Sathish Nadarajan.

Author Info

Sathish Nadarajan
 
Solution Architect
 
Rate this article
 
Sathish is a Microsoft MVP for SharePoint (Office Servers and Services) having 15+ years of experience in Microsoft Technologies. He holds a Masters Degree in Computer Aided Design and Business ...read more
 

Leave a comment