/// <summary> /// Creates system macro identity 'GlobalAdministrator' and assigns it <see cref="UserInfoProvider.AdministratorUser"/> as effective user. /// Assigns the identity to <see cref="UserInfoProvider.AdministratorUser"/> so that it is used upon macro re-signing. /// </summary> private static void CreateSystemMacroIdentity() { var administratorUser = UserInfoProvider.AdministratorUser; if (administratorUser == null) { throw new InvalidOperationException("No administrator user was found. Upgrade cannot proceed. Make sure at least 1 user with global administrator privilege level exists before upgrading."); } var systemMacroIdentity = new MacroIdentityInfo { MacroIdentityGuid = Guid.Parse("C6EF4403-2D1B-49E1-A41B-5B0FAFA857E9"), MacroIdentityName = "GlobalAdministrator", MacroIdentityEffectiveUserID = administratorUser.UserID }; MacroIdentityInfoProvider.SetMacroIdentityInfo(systemMacroIdentity); var administratorUserMacroIdentity = new UserMacroIdentityInfo { UserMacroIdentityMacroIdentityID = systemMacroIdentity.MacroIdentityID, UserMacroIdentityUserID = administratorUser.UserID, UserMacroIdentityUserGuid = administratorUser.UserGUID }; UserMacroIdentityInfoProvider.SetUserMacroIdentityInfo(administratorUserMacroIdentity); }
/// <summary> /// Loads data of edited user from DB into TextBoxes. /// </summary> protected void LoadData() { // Fill lstUICulture (loop over and localize them first) DataSet uiCultures = CultureInfoProvider.GetUICultures().OrderBy("CultureName"); LocalizeCultureNames(uiCultures); lstUICulture.DataSource = uiCultures.Tables[0].DefaultView; lstUICulture.DataTextField = "CultureName"; lstUICulture.DataValueField = "CultureID"; lstUICulture.DataBind(); lstUICulture.Items.Insert(0, GetString("Administration-User_Edit.Default")); lstUICulture.Items[0].Value = "0"; if (ui != null) { // Get user info properties txtEmail.Text = ui.Email; txtFirstName.Text = ui.FirstName; txtFullName.Text = ui.FullName; txtLastName.Text = ui.LastName; txtMiddleName.Text = ui.MiddleName; ucUserName.Value = ui.UserName; CheckBoxEnabled.Checked = ui.Enabled; chkIsExternal.Checked = ui.IsExternal; chkIsDomain.Checked = ui.UserIsDomain; chkIsHidden.Checked = ui.UserIsHidden; drpMacroIdentity.Value = UserMacroIdentityInfoProvider.GetUserMacroIdentityInfo(ui)?.UserMacroIdentityMacroIdentityID; chkIsMFRequired.Checked = ui.UserMFRequired; // Privilege and macro signature identity drop down check if (!CurrentUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.GlobalAdmin)) { drpMacroIdentity.Enabled = false; // Disable for global admins if (ui.CheckPrivilegeLevel(UserPrivilegeLevelEnum.GlobalAdmin)) { drpPrivilege.Enabled = false; } else // Only global admin can manage other admins. if (ui.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Admin)) { // Allow manage only for user himself if (ui.UserID != CurrentUser.UserID) { drpPrivilege.Enabled = false; } else { drpPrivilege.ExcludedValues = ((int)UserPrivilegeLevelEnum.GlobalAdmin).ToString(); } } else { drpPrivilege.ExcludedValues = (int)UserPrivilegeLevelEnum.GlobalAdmin + ";" + (int)UserPrivilegeLevelEnum.Admin; } } drpPrivilege.Value = (int)ui.SiteIndependentPrivilegeLevel; password = ui.GetValue("UserPassword").ToString(); // Disable username textbox for public user if (ui.IsPublic()) { ucUserName.Enabled = false; } myCulture = ui.PreferredCultureCode; myUICulture = ui.PreferredUICultureCode; lblInvalidLogonAttemptsNumber.Text = string.Format(GetString("general.attempts"), ui.UserInvalidLogOnAttempts); if (ui.UserInvalidLogOnAttempts > 0) { lblInvalidLogonAttemptsNumber.Style.Add(HtmlTextWriterStyle.Color, "Red"); } else { btnResetLogonAttempts.Enabled = (ui.UserAccountLockReason == UserAccountLockCode.FromEnum(UserAccountLockEnum.MaximumInvalidLogonAttemptsReached)); } LoadPasswordExpiration(ui); txtUserStartingPath.Text = ui.UserStartingAliasPath; } // Set content culture cultureSelector.Value = myCulture; if (!string.IsNullOrEmpty(myUICulture)) { // Set UI culture try { CultureInfo ciUI = CultureInfoProvider.GetCultureInfo(myUICulture); lstUICulture.SelectedIndex = lstUICulture.Items.IndexOf(lstUICulture.Items.FindByValue(ciUI.CultureID.ToString())); } catch { lstUICulture.SelectedIndex = lstUICulture.Items.IndexOf(lstUICulture.Items.FindByValue("0")); } } else { lstUICulture.SelectedIndex = lstUICulture.Items.IndexOf(lstUICulture.Items.FindByValue("0")); } if (ui != null) { // If new user lblCreatedInfo.Text = ui.UserCreated.ToString(); lblLastLogonTime.Text = ui.LastLogon.ToString(); LoadUserLogon(ui); if (ui.UserCreated == DateTimeHelper.ZERO_TIME) { lblCreatedInfo.Text = GetString("general.na"); } if (ui.LastLogon == DateTimeHelper.ZERO_TIME) { lblLastLogonTime.Text = GetString("general.na"); } } }