Пример #1
0
 /// <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;
     }
 }
Пример #2
0
        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}]");
        }
Пример #3
0
        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}]");
        }
Пример #5
0
 /// <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;
     }
 }
Пример #6
0
        /// <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);
        }
Пример #7
0
        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();
        }