protected override void FillResolve(Uri context, string[] entityTypes, string resolveInput, List <Microsoft.SharePoint.WebControls.PickerEntity> resolved) { //LDAPUser user = LDAPHelper.FindExact(resolveInput); LDAPUser user = LDAPHelper.FindExactMultipleOUs(resolveInput); if (null != user) { PickerEntity entity = GetPickerEntity(user); resolved.Add(entity); } }
public static LDAPUser FindExactMultipleOUs(string pattern) { LDAPUser ret = null; string ldapValueInPropertyBag = Utility.GetPropertyBagValue(Constants.PROPERTY_BAG_KEY_NAME, true); List <string> ldapPaths = Utility.SplitAndAppendOU(ldapValueInPropertyBag, CustomLDAPBasePath); foreach (var path in ldapPaths) { ret = FindExact(path, pattern); if (ret != null) { break; } } return(ret); }
private PickerEntity GetPickerEntity(LDAPUser user) { PickerEntity entity = CreatePickerEntity(); //entity.Claim = new SPClaim(LDAPClaimType, user.Mail, LDAPClaimValueType, // SPOriginalIssuers.Format(SPOriginalIssuerType.Forms, SPTrustedIdentityTokenIssuerName)); entity.Claim = new SPClaim(LDAPClaimType, user.Mail, LDAPClaimValueType, SPOriginalIssuers.Format(SPOriginalIssuerType.Forms, SPTrustedIdentityTokenIssuerName)); //entity.Description = user.DisplayName; //entity.DisplayText = user.DisplayName; entity.Description = user.sAMAccountName; entity.DisplayText = user.Mail; //entity.EntityData[PeopleEditorEntityDataKeys.DisplayName] = user.DisplayName; entity.EntityData[PeopleEditorEntityDataKeys.DisplayName] = user.Mail; //entity.EntityData[PeopleEditorEntityDataKeys.Email] = user.Mail; entity.EntityData[PeopleEditorEntityDataKeys.Email] = user.Mail; entity.EntityData[PeopleEditorEntityDataKeys.AccountName] = user.sAMAccountName; entity.EntityType = SPClaimEntityTypes.User; entity.IsResolved = true; return(entity); }
public static LDAPUser FindExact(string path, string pattern) { LDAPUser ret = null; //Run with elevated privileges to get the context of the service account SPSecurity.RunWithElevatedPrivileges(delegate() { //TODO: Where to store the LDAP string? using (DirectoryEntry entry = new DirectoryEntry(Constants.LDAP_PREFIX + path)) { using (DirectorySearcher ds = new DirectorySearcher(entry)) { ds.PropertiesToLoad.Add("displayName"); ds.PropertiesToLoad.Add("sAMAccountName"); ds.PropertiesToLoad.Add("givenName"); ds.PropertiesToLoad.Add("sn"); ds.PropertiesToLoad.Add("mail"); ds.Filter = "(|((displayName=" + pattern + ")(sAMAccountName=" + pattern + ")(givenName=" + pattern + ")(sn=" + pattern + ")(mail=" + pattern + ")))"; SearchResult result = ds.FindOne(); if (null != result) { ret = new LDAPUser { DisplayName = result.Properties["displayName"][0].ToString(), sAMAccountName = result.Properties["sAMAccountName"][0].ToString(), //GivenName = result.Properties["givenName"][0].ToString(), //SurName = result.Properties["sn"][0].ToString(), Mail = result.Properties["mail"][0].ToString(), GivenName = result.Properties["sAMAccountName"][0].ToString(), SurName = result.Properties["sAMAccountName"][0].ToString(), //Mail = result.Properties["sAMAccountName"][0].ToString() }; } } } }); return(ret); }