Exemple #1
0
 private static void setEmail(string principalCID, SPListItem item, ADuser aduser)
 {
     if (aduser.CID.Equals(principalCID))
     {
         string principalEMail = ConfigurationFile.GetGonfigurationFile(Chalmers.Core.Constants.CoreConstants.ConfigurationFilePath).GetSettingValue("PrincipalEMail");
         LoggingService.WriteTrace(
             EventSeverity.Information,
             "Principal CID found: '" + aduser.CID + "'. Setting e-mail to: '" + principalEMail + "', based on: '" + Chalmers.Core.Constants.CoreConstants.ConfigurationFilePath + "'.",
             LogCategory.ChalmersPublicWeb);
         item["FieldStaffEmail"] = principalEMail;
     }
     else
     {
         item["FieldStaffEmail"] = aduser.Mail;
     }
 }
Exemple #2
0
        private static void updateFromAD(Dictionary <string, Guid> indexedTaxonomy, TermSet termSet, string ldapServerUrl, string principalCID, SPListItem item, SPFieldUser staffUserId)
        {
            var chalmerUserId = staffUserId.GetFieldValue(item[Constants.ChalmersID].ToString()) as SPFieldUserValue;

            if (chalmerUserId != null)
            {
                string username = chalmerUserId.User.LoginName;
                LoggingService.WriteTrace(EventSeverity.Information, "Got username: "******"UserLoginName has claims: " + userLoginName, LogCategory.ChalmersPublicWeb);
                }

                if (!string.IsNullOrEmpty(userLoginName))
                {
                    ADuser aduser = new ADuser(userLoginName)
                    {
                        LdapServerUrl   = ldapServerUrl,
                        GivenName       = string.Empty,
                        SN              = string.Empty,
                        Mail            = string.Empty,
                        Organisation    = string.Empty,
                        TelephoneNumber = string.Empty,
                        OtherTelephone  = string.Empty
                    };


#if DEBUG
                    string value = ConfigurationFile.GetGonfigurationFile(Chalmers.PublicWeb.Core.Constants.ConfigurationFilePath).GetSettingValue("StaffSyncCID");
                    if (value.ToLower().Contains(aduser.CID.ToLower().Replace("net\\", string.Empty)))
                    {
                        string x = "asdf";
                        System.Diagnostics.Debug.Print(x.ToString());
                    }
#endif

                    LoggingService.WriteTrace(EventSeverity.Information, "aduser CID = " + aduser.CID, LogCategory.ChalmersPublicWeb);
                    string domain = WebConfigurationManager.AppSettings["CurrentDomain"];

                    if (string.IsNullOrEmpty(domain))
                    {
                        aduser.ADDomainName = @"net\";
                    }
                    else
                    {
                        aduser.ADDomainName = domain + @"\";
                    }

                    if (aduser.CID.IndexOf(@"\", StringComparison.OrdinalIgnoreCase) > 0)
                    {
                        aduser.CIDWithoutDomain = aduser.CID.Remove(0, aduser.CID.IndexOf(@"\", StringComparison.OrdinalIgnoreCase) + 1);
                        #if DEBUG
                        if (aduser.CIDWithoutDomain.ToString().ToLower().Equals("kain") ||
                            aduser.CIDWithoutDomain.ToString().ToLower().Equals("anderska"))
                        {
                            string x = aduser.CIDWithoutDomain.ToString();
                            System.Diagnostics.Debug.Print(x);
                        }
                        #endif
                    }
                    List <Term>   terms        = null;
                    TaxonomyField managedField = null;
                    aduser = ADUserProfile.GetUserProfileFromAD(aduser);

                    if (aduser != null)
                    {
                        bool adUnitsHaveChanged = taxFieldChanged(indexedTaxonomy, termSet, item, aduser, ref terms, ref managedField);
                        System.Text.StringBuilder phoneNumbers = new System.Text.StringBuilder();
                        if (!string.IsNullOrEmpty(aduser.TelephoneNumber))
                        {
                            phoneNumbers.Append(aduser.TelephoneNumber);
                        }
                        if (phoneNumbers.Length > 0 && !string.IsNullOrEmpty(aduser.OtherTelephone))
                        {
                            phoneNumbers.Append(", ");
                        }
                        if (!string.IsNullOrEmpty(aduser.OtherTelephone))
                        {
                            phoneNumbers.Append(aduser.OtherTelephone);
                        }

                        if (
                            hasUpdatedValues(item, aduser, phoneNumbers) ||
                            DateTime.Now.DayOfWeek == DayOfWeek.Saturday ||
                            adUnitsHaveChanged ||
                            (aduser.CID.Equals(principalCID))
                            )
                        {
                            item["EduPersonOrcid"]      = aduser.EduPersonOrcid;
                            item["FieldStaffGivenname"] = aduser.GivenName;
                            item["FieldStaffLastName"]  = aduser.SN;
                            item["FieldStaffFullName"]  = aduser.GivenName + " " + aduser.SN;
                            item["Title"] = aduser.GivenName + " " + aduser.SN;
                            item["FieldStaffOrganisation"] = aduser.Organisation;
                            item["FieldStaffTelephone"]    = phoneNumbers.ToString();
                            item["OfficeRoomNumber"]       = aduser.OfficeRoomNumber;
                            item["OfficeStreet"]           = aduser.OfficeStreet;
                            item["OfficeFloorNumber"]      = aduser.OfficeFloorNumber;

                            setEmail(principalCID, item, aduser);

                            if (adUnitsHaveChanged)
                            {
                                if (terms == null)
                                {
                                    terms = new List <Term>();
                                }
                                managedField.SetFieldValue(item, terms);
                            }

                            trySaveChanges(item, aduser);
                        }
                    }
                }
            }
        }
Exemple #3
0
        private void SyncStaffList(SPSite site, Guid stafWebId, Dictionary <string, Guid> indexedTaxonomy, TermSet termSet, ref int itemsProcessed)
        {
            string ldapServerUrl = ConfigurationFile.GetGonfigurationFile(Constants.ConfigurationFilePath).GetSettingValue("LdapServerUrl");

            if (string.IsNullOrEmpty(ldapServerUrl))
            {
                string msg = string.Format("No LDAP server configured! Unable to sync staff members. Add the key 'LdapServerUrl' to the configuration file {0}", Constants.ConfigurationFilePath);
                Console.WriteLine(msg);
                LoggingService.WriteTrace(
                    EventSeverity.Error,
                    msg,
                    LogCategory.ChalmersPublicWeb);
                return;
            }

            using (SPWeb staffWeb = site.OpenWeb(stafWebId))
            {
                PublishingWeb pweb = PublishingWeb.GetPublishingWeb(staffWeb);
                SPList        staffSitePagesList = pweb.PagesList;
                LoggingService.WriteTrace(EventSeverity.Information, "Got pages list: " + staffSitePagesList.Title, LogCategory.ChalmersPublicWeb);
                SPListItemCollection col = staffSitePagesList.Items;

                SPField field = (staffSitePagesList).Fields.GetField(Constants.ChalmersID);

                LoggingService.WriteTrace(EventSeverity.Information,
                                          string.Format("Got department taxonomy, number of items = {0}. Description with text 59fosmig exists = {1}", indexedTaxonomy.Count, indexedTaxonomy.ContainsKey("59fosmig")),
                                          LogCategory.ChalmersPublicWeb);


                string principalCID = ConfigurationFile.GetGonfigurationFile(Chalmers.Core.Constants.CoreConstants.ConfigurationFilePath).GetSettingValue("PrincipalCID");

                foreach (SPListItem item in col)
                {
                    double max = 16000.0;
                    if (itemsProcessed < max)
                    {
                        try { UpdateProgress((int)((itemsProcessed++ / max) * 100)); } //col.Count
                        catch { }
                        Console.Write("\rProcessing " + itemsProcessed + " " + item.Url + "        ");
                    }

                    try
                    {
                        if (item.ContentTypeId.ToString().StartsWith(StaffContentTypeid, StringComparison.OrdinalIgnoreCase))
                        {
                            LoggingService.WriteTrace(EventSeverity.Information, "Passed content type check.", LogCategory.ChalmersPublicWeb);


                            var staffUserId = item.Fields[field.Id] as SPFieldUser;
                            if (staffUserId != null && item[Constants.ChalmersID] != null)
                            {
                                updateFromAD(indexedTaxonomy, termSet, ldapServerUrl, principalCID, item, staffUserId);
                            }
                        }
                    }
                    catch (Exception exception)
                    {
                        string message = string.Format("User Update Failed: {0} Details: {1}", item.Title, exception);
                        Console.WriteLine(Environment.NewLine + message);
                    }
                }
            }
        }