Monday, December 7, 2020

 

Sharepoint UserProfileService ile Authentication

Sharepoint UserProfileService , bir organizasyonda Active Directory’de  bulunan kullanıcılara ait bilgilerin sharepoint’in kendi veri tabanında  depoladığı bir web servistir.

Formlarımızda bu servisi veri bağlantısı ekleyerek te kullanabiliriz veya referans olarak ekleyip kod taraflı da çalıştırabiliriz.

·       Referans olarak kullanma (kod yazarak)

UserProfileService Sarepoint sitenizin kurulu olduğu makinada  _vti_bin kasöründe UserProfileService.asmx olarak tutulur.

UserProfileService kullanılarak form yüklenirken kullanıcıyı tanıyan ve kullanıcıya ait bilgileri formda ilgili alanlara dolduran örnek bir infopath formu tasarlıyoruz.







Kullanıcının Ad ve Soyad, Bölüm, E-Mail, iş telefonu gibi bilgilerinin UserProfileServisten alınacağı PersonelBilgileri adında bir metod yazıp bu metodu form yüklenirken çağırıyoruz.

public void PersonelBilgileri()

        {

                XPathNavigator myRoot = MainDataSource.CreateNavigator();

           

                ProfileService.UserProfileService profileService = new ProfileService.UserProfileService();

 

                profileService.UseDefaultCredentials = true;

 

                ProfileService.PropertyData[] userProps = null;

 

                try

                {

                    userProps = profileService.GetUserProfileByName(null);

                }

                catch

                {

 

 

                }

 

                if (userProps == null || userProps.Length == 0)

                {

                    return;

                }

                for (int i = 0; i < userProps.Length; i++)

                {

                    XPathNavigator node = null;

                    switch (userProps[i].Name.ToLower())

                    {

                        case "preferredname":

                            node = myRoot.SelectSingleNode("/my:myFields/my:adsoyad", NamespaceManager);

                            break;

 

                        case "department":

                            node = myRoot.SelectSingleNode("/my:myFields/my:dep", NamespaceManager);

                            break;

 

                        case "workemail":

                            node = myRoot.SelectSingleNode("/my:myFields/my:email", NamespaceManager);

                            break;

 

                        case "workphone":

                            node = myRoot.SelectSingleNode("/my:myFields/my:dahili", NamespaceManager);

                            break;

 

                        default:

                            continue;

                    }

 

                    ProfileService.ValueData[] values = userProps[i].Values;

 

                    if (values.Length > 0)

                    {

                        if (node != null && string.IsNullOrEmpty(node.Value))

                        {

                            node.SetValue(values[0].Value.ToString());

                        }

                    }

                }

        }

 

Metodumuzu Form yüklenirken çağırıyoruz.

  public void FormEvents_Loading(object sender, LoadingEventArgs e)

        {

            PersonelBilgileri();

        }

 

 

Formumuzu çalıştırdığımızda;


·       Veri Bağlantısı ekleyerek  kullanma








 

Hazırlayan:Güler ONUK



No comments:

Post a Comment

Infopath Formlarında Dinamik Kontroller Yaratma

                                  Sharepoint Form Kitaplığında Klasörleme Bir sharepoint Form kitaplığında ki item kayıtlarının fazlalığı ...