/// <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; } }
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}]"); }
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); }
/// <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}]"); }
/// <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> /// 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 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(); }