/// <summary> /// This method will check whether user exists in a sharepoint site or not /// </summary> /// <param name="externalSharingRequest"></param> /// <returns></returns> public bool CheckUserPresentInMatterCenter(ClientContext clientContext, string email) { try { //If the current email is part of current organization, no need to check for validity of the user email if (email.Trim().ToLower().IndexOf(generalSettings.Tenant.Trim().ToLower()) > 0) { return(true); } string userAlias = email; ClientPeoplePickerQueryParameters queryParams = new ClientPeoplePickerQueryParameters(); queryParams.AllowMultipleEntities = false; queryParams.MaximumEntitySuggestions = 500; queryParams.PrincipalSource = PrincipalSource.All; queryParams.PrincipalType = PrincipalType.User | PrincipalType.SecurityGroup; queryParams.QueryString = userAlias; ClientResult <string> clientResult = ClientPeoplePickerWebServiceInterface.ClientPeoplePickerSearchUser(clientContext, queryParams); clientContext.ExecuteQuery(); string results = clientResult.Value; int peoplePickerMaxRecords = 30; IList <PeoplePickerUser> foundUsers = Newtonsoft.Json.JsonConvert.DeserializeObject <List <PeoplePickerUser> >(results).Where(result => (string.Equals(result.EntityType, ServiceConstants.PEOPLE_PICKER_ENTITY_TYPE_USER, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.Description)) || (!string.Equals(result.EntityType, ServiceConstants.PEOPLE_PICKER_ENTITY_TYPE_USER, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.EntityData.Email))).Take(peoplePickerMaxRecords).ToList(); return(foundUsers.Count > 0); } catch (Exception ex) { throw; } }
private static async Task <string> ResolvePeoplePickerValueForEmailImplementation(Web web, string emailAddress) { var param = new ClientPeoplePickerQueryParameters { PrincipalSource = Utilities.PrincipalSource.All, PrincipalType = Utilities.PrincipalType.All, MaximumEntitySuggestions = 30, QueryString = emailAddress, AllowEmailAddresses = true, AllowOnlyEmailAddresses = false, AllUrlZones = false, ForceClaims = false, Required = true, SharePointGroupID = 0, UrlZone = 0, UrlZoneSpecified = false }; // Resolve people picker value based on email var ret = ClientPeoplePickerWebServiceInterface.ClientPeoplePickerResolveUser(web.Context, param); await web.Context.ExecuteQueryRetryAsync(); // Return people picker return value in right format return($"[{ret.Value}]"); }
/// <summary> /// This method will check whether user exists in a sharepoint site or not /// </summary> /// <param name="externalSharingRequest"></param> /// <returns></returns> private static bool CheckUserPresentInMatterCenter(ClientContext ctx, string clientUrl, string email, IConfigurationRoot configuration, TextWriter log) { try { string userAlias = email; ClientPeoplePickerQueryParameters queryParams = new ClientPeoplePickerQueryParameters(); queryParams.AllowMultipleEntities = false; queryParams.MaximumEntitySuggestions = 500; queryParams.PrincipalSource = PrincipalSource.All; queryParams.PrincipalType = PrincipalType.User | PrincipalType.SecurityGroup; queryParams.QueryString = userAlias; ClientResult <string> clientResult = ClientPeoplePickerWebServiceInterface.ClientPeoplePickerSearchUser(ctx, queryParams); ctx.ExecuteQuery(); string results = clientResult.Value; int peoplePickerMaxRecords = 30; IList <PeoplePickerUser> foundUsers = Newtonsoft.Json.JsonConvert.DeserializeObject <List <PeoplePickerUser> >(results).Where(result => (string.Equals(result.EntityType, ServiceConstants.PEOPLE_PICKER_ENTITY_TYPE_USER, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.Description)) || (!string.Equals(result.EntityType, ServiceConstants.PEOPLE_PICKER_ENTITY_TYPE_USER, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.EntityData.Email))).Take(peoplePickerMaxRecords).ToList(); return(foundUsers.Count > 0); } catch (Exception ex) { log.WriteLine($"Exception occured in the method CheckUserPresentInMatterCenter. {ex}"); throw; } }
/// <summary> /// Can be used to get needed people picker search result value for given email account. /// See <a href="https://msdn.microsoft.com/en-us/library/office/jj179690.aspx">MSDN</a> /// </summary> /// <param name="web">Web for the context used for people picker search</param> /// <param name="emailAddress">Email address to be used as the query parameter. Should be pointing to unique person which is then searched using people picker capability programatically.</param> /// <returns>Resolves people picker value which can be used for sharing objects in the SharePoint site</returns> public static string ResolvePeoplePickerValueForEmail(this Web web, string emailAddress) { ClientPeoplePickerQueryParameters param = new ClientPeoplePickerQueryParameters(); param.PrincipalSource = Utilities.PrincipalSource.All; param.PrincipalType = Utilities.PrincipalType.All; param.MaximumEntitySuggestions = 30; param.QueryString = emailAddress; param.AllowEmailAddresses = true; param.AllowOnlyEmailAddresses = false; param.AllUrlZones = false; param.ForceClaims = false; param.Required = true; param.SharePointGroupID = 0; param.UrlZone = 0; param.UrlZoneSpecified = false; // Resolve people picker value based on email var ret = ClientPeoplePickerWebServiceInterface.ClientPeoplePickerResolveUser(web.Context, param); web.Context.ExecuteQueryRetry(); // Return people picker return value in right format return($"[{ret.Value}]"); }
public List <User> Search(string query, string uniqueField, int maxSuggestions = 100, PrincipalSource principalSource = PrincipalSource.All, PrincipalType principalType = PrincipalType.User, int sharePointGroupId = -1) { if (string.IsNullOrWhiteSpace(query)) { return(null); } ClientPeoplePickerQueryParameters querryParams = new ClientPeoplePickerQueryParameters(); querryParams.AllowMultipleEntities = false; querryParams.MaximumEntitySuggestions = maxSuggestions; querryParams.PrincipalSource = principalSource; querryParams.PrincipalType = principalType; querryParams.QueryString = query; querryParams.SharePointGroupID = sharePointGroupId; //execute query to Sharepoint ClientResult <string> clientResult = ClientPeoplePickerWebServiceInterface.ClientPeoplePickerSearchUser(_clientContext, querryParams); _clientContext.ExecuteQuery(); dynamic target = new JavaScriptSerializer().DeserializeObject(clientResult.Value); var matches = new List <User>(); foreach (var user in target) { User ensuredUser = _clientContext.Web.EnsureUser(user[uniqueField]); _clientContext.Load(ensuredUser); matches.Add(ensuredUser); } _clientContext.ExecuteQuery(); return(matches); }
public static string GetPeoplePickerSearchData(ClientContext context) { //get searchstring and other variables var searchString = (string)HttpContext.Current.Request["SearchString"]; int principalType = Convert.ToInt32(HttpContext.Current.Request["PrincipalType"]); string spGroupName = (string)HttpContext.Current.Request["SPGroupName"]; ClientPeoplePickerQueryParameters querryParams = new ClientPeoplePickerQueryParameters(); querryParams.AllowMultipleEntities = false; querryParams.MaximumEntitySuggestions = 2000; querryParams.PrincipalSource = PrincipalSource.All; querryParams.PrincipalType = (PrincipalType) principalType; querryParams.QueryString = searchString; if (!string.IsNullOrEmpty(spGroupName)) { SPGroup group = context.Web.SiteGroups.GetByName(spGroupName); if (group != null) { querryParams.SharePointGroupID = group.ID; } } //execute query to Sharepoint ClientResult<string> clientResult = Microsoft.SharePoint.ApplicationPages.ClientPickerQuery.ClientPeoplePickerWebServiceInterface.ClientPeoplePickerSearchUser(context, querryParams); context.ExecuteQuery(); return clientResult.Value; }
/// <summary> /// Places service call to search user based on the search term. /// </summary> /// <param name="clientContext">Client context</param> /// <param name="searchTerm">Search term</param> /// <returns>Set of users returned by people picker service based on the search term</returns> internal static IList <PeoplePickerUser> SearchUsers(ClientContext clientContext, string searchTerm) { List <PeoplePickerUser> userResult = null; string results = string.Empty; int peoplePickerMaxRecords; try { ClientPeoplePickerQueryParameters queryParams = new ClientPeoplePickerQueryParameters(); queryParams.AllowMultipleEntities = Convert.ToBoolean(ServiceConstantStrings.PeoplePickerAllowMultipleEntities, CultureInfo.InvariantCulture); queryParams.MaximumEntitySuggestions = Convert.ToInt32(ServiceConstantStrings.PeoplePickerMaximumEntitySuggestions, CultureInfo.InvariantCulture); queryParams.PrincipalSource = PrincipalSource.All; queryParams.PrincipalType = PrincipalType.User | PrincipalType.SecurityGroup; queryParams.QueryString = searchTerm; peoplePickerMaxRecords = Convert.ToInt32(ServiceConstantStrings.PeoplePickerMaxRecords, CultureInfo.InvariantCulture); ClientResult <string> clientResult = ClientPeoplePickerWebServiceInterface.ClientPeoplePickerSearchUser(clientContext, queryParams); clientContext.ExecuteQuery(); results = clientResult.Value; userResult = JsonConvert.DeserializeObject <List <PeoplePickerUser> >(results).Where(result => (string.Equals(result.EntityType, ConstantStrings.PeoplePickerEntityTypeUser, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.Description)) || (!string.Equals(result.EntityType, ConstantStrings.PeoplePickerEntityTypeUser, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.EntityData.Email))).Take(peoplePickerMaxRecords).ToList(); } catch (Exception exception) { Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName); } return(userResult); }
public static string GetPeoplePickerSearchData(string SearchString, string SPGroupName, ClientContext context) { using (context) { //get searchstring and other variables var searchString = SearchString; int principalType = 1; string spGroupName = SPGroupName; ClientPeoplePickerQueryParameters queryParams = new ClientPeoplePickerQueryParameters(); queryParams.AllowMultipleEntities = false; queryParams.MaximumEntitySuggestions = 2000; queryParams.PrincipalSource = PrincipalSource.All; queryParams.PrincipalType = (PrincipalType) principalType; queryParams.QueryString = searchString; if (!string.IsNullOrEmpty(spGroupName)) { if (GroupID == -1) { var group = context.Web.SiteGroups.GetByName(spGroupName); if (group != null) { context.Load(group, p => p.Id); context.ExecuteQuery(); GroupID = group.Id; queryParams.SharePointGroupID = group.Id; } } else { queryParams.SharePointGroupID = GroupID; } } //execute query to Sharepoint ClientResult<string> clientResult = Microsoft.SharePoint.ApplicationPages.ClientPickerQuery.ClientPeoplePickerWebServiceInterface .ClientPeoplePickerSearchUser(context, queryParams); context.ExecuteQuery(); return clientResult.Value; } }
public static string GetPeoplePickerSearchData(string SearchString, string SPGroupName, ClientContext context) { using (context) { //get searchstring and other variables var searchString = SearchString; int principalType = 1; string spGroupName = SPGroupName; ClientPeoplePickerQueryParameters queryParams = new ClientPeoplePickerQueryParameters(); queryParams.AllowMultipleEntities = false; queryParams.MaximumEntitySuggestions = 2000; queryParams.PrincipalSource = PrincipalSource.All; queryParams.PrincipalType = (PrincipalType)principalType; queryParams.QueryString = searchString; if (!string.IsNullOrEmpty(spGroupName)) { if (GroupID == -1) { var group = context.Web.SiteGroups.GetByName(spGroupName); if (group != null) { context.Load(group, p => p.Id); context.ExecuteQuery(); GroupID = group.Id; queryParams.SharePointGroupID = group.Id; } } else { queryParams.SharePointGroupID = GroupID; } } //execute query to Sharepoint ClientResult <string> clientResult = Microsoft.SharePoint.ApplicationPages.ClientPickerQuery.ClientPeoplePickerWebServiceInterface .ClientPeoplePickerSearchUser(context, queryParams); context.ExecuteQuery(); return(clientResult.Value); } }
public static string GetPeoplePickerSearchData(ClientContext context) { //get searchstring and other variables var searchString = (string)HttpContext.Current.Request["SearchString"]; int principalType = Convert.ToInt32(HttpContext.Current.Request["PrincipalType"]); ClientPeoplePickerQueryParameters querryParams = new ClientPeoplePickerQueryParameters(); querryParams.AllowMultipleEntities = false; querryParams.MaximumEntitySuggestions = 2000; querryParams.PrincipalSource = PrincipalSource.All; querryParams.PrincipalType = (PrincipalType) principalType; querryParams.QueryString = searchString; //execute query to Sharepoint ClientResult<string> clientResult = Microsoft.SharePoint.ApplicationPages.ClientPickerQuery.ClientPeoplePickerWebServiceInterface.ClientPeoplePickerSearchUser(context, querryParams); context.ExecuteQuery(); return clientResult.Value; }
public static string GetPeoplePickerSearchData(ClientContext context) { //get searchstring and other variables var searchString = (string)HttpContext.Current.Request["SearchString"]; int principalType = Convert.ToInt32(HttpContext.Current.Request["PrincipalType"]); ClientPeoplePickerQueryParameters querryParams = new ClientPeoplePickerQueryParameters(); querryParams.AllowMultipleEntities = false; querryParams.MaximumEntitySuggestions = 2000; querryParams.PrincipalSource = PrincipalSource.All; querryParams.PrincipalType = (PrincipalType)principalType; querryParams.QueryString = searchString; //execute query to Sharepoint ClientResult <string> clientResult = Microsoft.SharePoint.ApplicationPages.ClientPickerQuery.ClientPeoplePickerWebServiceInterface.ClientPeoplePickerSearchUser(context, querryParams); context.ExecuteQuery(); return(clientResult.Value); }
/// <summary> /// Can be used to get needed people picker search result value for given email account. /// See <a href="https://msdn.microsoft.com/en-us/library/office/jj179690.aspx">MSDN</a> /// </summary> /// <param name="web">Web for the context used for people picker search</param> /// <param name="emailAddress">Email address to be used as the query parameter. Should be pointing to unique person which is then searched using people picker capability programatically.</param> /// <returns>Resolves people picker value which can be used for sharing objects in the SharePoint site</returns> public static string ResolvePeoplePickerValueForEmail(this Web web, string emailAddress) { ClientPeoplePickerQueryParameters param = new ClientPeoplePickerQueryParameters(); param.PrincipalSource = Microsoft.SharePoint.Client.Utilities.PrincipalSource.All; param.PrincipalType = Microsoft.SharePoint.Client.Utilities.PrincipalType.All; param.MaximumEntitySuggestions = 30; param.QueryString = emailAddress; param.AllowEmailAddresses = true; param.AllowOnlyEmailAddresses = false; param.AllUrlZones = false; param.ForceClaims = false; param.Required = true; param.SharePointGroupID = 0; param.UrlZone = 0; param.UrlZoneSpecified = false; // Resolve people picker value based on email var ret = ClientPeoplePickerWebServiceInterface.ClientPeoplePickerResolveUser(web.Context, param); web.Context.ExecuteQueryRetry(); // Return people picker return value in right format return string.Format("[{0}]", ret.Value); }
public static void ResolveUser(ClientContext context) { string input = Guid.NewGuid().ToString(); var user = context.Web.EnsureUser(input); context.Load(user); context.ExecuteQuery(); ClientPeoplePickerQueryParameters searchParams = new ClientPeoplePickerQueryParameters() { AllowEmailAddresses = true, AllowMultipleEntities = true, QueryString = input, Required = true, PrincipalType = PrincipalType.SecurityGroup | PrincipalType.User, PrincipalSource = PrincipalSource.All, MaximumEntitySuggestions = 30 }; ClientResult <string> UserInfos = ClientPeoplePickerWebServiceInterface.ClientPeoplePickerResolveUser(context, searchParams); context.ExecuteQuery(); }
/// <summary> /// This method will check whether user exists in a sharepoint site or not /// </summary> /// <param name="externalSharingRequest"></param> /// <returns></returns> public bool CheckUserPresentInMatterCenter(ClientContext clientContext, string email) { try { //If the current email is part of current organization, no need to check for validity of the user email if (email.Trim().ToLower().IndexOf(generalSettings.Tenant.Trim().ToLower()) > 0) { return true; } string userAlias = email; ClientPeoplePickerQueryParameters queryParams = new ClientPeoplePickerQueryParameters(); queryParams.AllowMultipleEntities = false; queryParams.MaximumEntitySuggestions = 500; queryParams.PrincipalSource = PrincipalSource.All; queryParams.PrincipalType = PrincipalType.User | PrincipalType.SecurityGroup; queryParams.QueryString = userAlias; ClientResult<string> clientResult = ClientPeoplePickerWebServiceInterface.ClientPeoplePickerSearchUser(clientContext, queryParams); clientContext.ExecuteQuery(); string results = clientResult.Value; int peoplePickerMaxRecords = 30; IList<PeoplePickerUser> foundUsers = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PeoplePickerUser>>(results).Where(result => (string.Equals(result.EntityType, ServiceConstants.PEOPLE_PICKER_ENTITY_TYPE_USER, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.Description)) || (!string.Equals(result.EntityType, ServiceConstants.PEOPLE_PICKER_ENTITY_TYPE_USER, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.EntityData.Email))).Take(peoplePickerMaxRecords).ToList(); return foundUsers.Count > 0; } catch (Exception ex) { throw; } }
/// <summary> /// /// </summary> /// <param name="searchRequestVM"></param> /// <returns></returns> public IList<PeoplePickerUser> SearchUsers(SearchRequestVM searchRequestVM) { var client = searchRequestVM.Client; var searchObject = searchRequestVM.SearchObject; try { using (ClientContext clientContext = spoAuthorization.GetClientContext(client.Url)) { ClientPeoplePickerQueryParameters queryParams = new ClientPeoplePickerQueryParameters(); queryParams.AllowMultipleEntities = searchSettings.PeoplePickerAllowMultipleEntities; queryParams.MaximumEntitySuggestions = searchSettings.PeoplePickerMaximumEntitySuggestions; queryParams.PrincipalSource = PrincipalSource.All; queryParams.PrincipalType = PrincipalType.User | PrincipalType.SecurityGroup; queryParams.QueryString = searchObject.SearchTerm; int peoplePickerMaxRecords = searchSettings.PeoplePickerMaxRecords; ClientResult<string> clientResult = ClientPeoplePickerWebServiceInterface.ClientPeoplePickerSearchUser(clientContext, queryParams); clientContext.ExecuteQuery(); string results = clientResult.Value; IList<PeoplePickerUser> foundUsers = JsonConvert.DeserializeObject<List<PeoplePickerUser>>(results).Where(result => (string.Equals(result.EntityType, ServiceConstants.PEOPLE_PICKER_ENTITY_TYPE_USER, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.Description)) || (!string.Equals(result.EntityType, ServiceConstants.PEOPLE_PICKER_ENTITY_TYPE_USER, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.EntityData.Email))).Take(peoplePickerMaxRecords).ToList(); return foundUsers; } } catch (Exception exception) { customLogger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable); throw; } }
/// <summary> /// This method will check whether user exists in a sharepoint site or not /// </summary> /// <param name="externalSharingRequest"></param> /// <returns></returns> private static bool CheckUserPresentInMatterCenter(ClientContext ctx, string clientUrl, string email, IConfigurationRoot configuration, TextWriter log) { try { string userAlias = email; ClientPeoplePickerQueryParameters queryParams = new ClientPeoplePickerQueryParameters(); queryParams.AllowMultipleEntities = false; queryParams.MaximumEntitySuggestions = 500; queryParams.PrincipalSource = PrincipalSource.All; queryParams.PrincipalType = PrincipalType.User | PrincipalType.SecurityGroup; queryParams.QueryString = userAlias; ClientResult<string> clientResult = ClientPeoplePickerWebServiceInterface.ClientPeoplePickerSearchUser(ctx, queryParams); ctx.ExecuteQuery(); string results = clientResult.Value; int peoplePickerMaxRecords = 30; IList<PeoplePickerUser> foundUsers = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PeoplePickerUser>>(results).Where(result => (string.Equals(result.EntityType, ServiceConstants.PEOPLE_PICKER_ENTITY_TYPE_USER, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.Description)) || (!string.Equals(result.EntityType, ServiceConstants.PEOPLE_PICKER_ENTITY_TYPE_USER, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.EntityData.Email))).Take(peoplePickerMaxRecords).ToList(); return foundUsers.Count > 0; } catch (Exception ex) { log.WriteLine($"Exception occured in the method CheckUserPresentInMatterCenter. {ex}"); throw; } }
/// <summary> /// Places service call to search user based on the search term. /// </summary> /// <param name="clientContext">Client context</param> /// <param name="searchTerm">Search term</param> /// <returns>Set of users returned by people picker service based on the search term</returns> internal static IList<PeoplePickerUser> SearchUsers(ClientContext clientContext, string searchTerm) { List<PeoplePickerUser> userResult = null; string results = string.Empty; int peoplePickerMaxRecords; try { ClientPeoplePickerQueryParameters queryParams = new ClientPeoplePickerQueryParameters(); queryParams.AllowMultipleEntities = Convert.ToBoolean(ServiceConstantStrings.PeoplePickerAllowMultipleEntities, CultureInfo.InvariantCulture); queryParams.MaximumEntitySuggestions = Convert.ToInt32(ServiceConstantStrings.PeoplePickerMaximumEntitySuggestions, CultureInfo.InvariantCulture); queryParams.PrincipalSource = PrincipalSource.All; queryParams.PrincipalType = PrincipalType.User | PrincipalType.SecurityGroup; queryParams.QueryString = searchTerm; peoplePickerMaxRecords = Convert.ToInt32(ServiceConstantStrings.PeoplePickerMaxRecords, CultureInfo.InvariantCulture); ClientResult<string> clientResult = ClientPeoplePickerWebServiceInterface.ClientPeoplePickerSearchUser(clientContext, queryParams); clientContext.ExecuteQuery(); results = clientResult.Value; userResult = JsonConvert.DeserializeObject<List<PeoplePickerUser>>(results).Where(result => (string.Equals(result.EntityType, ConstantStrings.PeoplePickerEntityTypeUser, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.Description)) || (!string.Equals(result.EntityType, ConstantStrings.PeoplePickerEntityTypeUser, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(result.EntityData.Email))).Take(peoplePickerMaxRecords).ToList(); } catch (Exception exception) { Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName); } return userResult; }