/// <summary> /// Returns true if customer is anonymous on current site or has login on current site. /// </summary> /// <param name="customer">Customer object</param> protected bool CheckCustomerSiteID(CustomerInfo customer) { if (customer == null) { return(false); } int currentSiteId = CMSContext.CurrentSiteID; if (customer.CustomerSiteID == currentSiteId) { return(true); } if ((customer.CustomerUserID > 0) && (UserSiteInfoProvider.GetUserSiteInfo(customer.CustomerUserID, currentSiteId) != null)) { return(true); } if (CurrentUser.IsGlobalAdministrator && (customer.CustomerUserID == 0) && (customer.CustomerSiteID == 0)) { return(true); } return(false); }
protected void Page_Load(object sender, EventArgs e) { // Show site selector CurrentMaster.DisplaySiteSelectorPanel = true; if ((SiteID > 0) && !MembershipContext.AuthenticatedUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.GlobalAdmin)) { CurrentMaster.DisplaySiteSelectorPanel = false; return; } // Set site selector siteSelector.DropDownSingleSelect.AutoPostBack = true; siteSelector.OnlyRunningSites = false; siteSelector.UniSelector.OnSelectionChanged += new EventHandler(UniSelector_OnSelectionChanged); if (!RequestHelper.IsPostBack()) { // If user is member of current site if (UserSiteInfoProvider.GetUserSiteInfo(userId, SiteID) != null) { // Force uniselector to preselect current site siteSelector.Value = SiteID; } // Force to load data siteSelector.Reload(true); } // Get truly selected item SiteID = ValidationHelper.GetInteger(siteSelector.Value, 0); }
private void GetAndBulkUpdateUsers() { // Prepare the parameters // Get the data DataSet users = UserInfoProvider.GetUsers(null, null); if (!DataHelper.DataSourceIsEmpty(users)) { // Loop through the individual items foreach (DataRow userDr in users.Tables[0].Rows) { // Create object from DataRow UserInfo modifyUser = new UserInfo(userDr); // Update the properties // modifyUser.FullName = modifyUser.FullName.ToUpper(); // Save the changes // UserInfoProvider.SetUserInfo(modifyUser); int userId = modifyUser.UserID; int siteId = CMSContext.CurrentSiteID; // Save the binding UserSiteInfoProvider.AddUserToSite(userId, siteId); } } }
protected void Page_Load(object sender, EventArgs e) { _currentUserId = QueryHelper.GetInteger("objectid", 0); _currentSiteId = CMS.SiteProvider.SiteContext.CurrentSiteID; var currentSiteUserIds = UserSiteInfoProvider.GetUserSites() .WhereEquals("SiteID", _currentSiteId) .And() .WhereNotEquals("UserID", _currentUserId); if (currentSiteUserIds.Count > 0) { _currentSiteUsersFilter = string.Format("UserId in ({0})", TextHelper.Join(",", DataHelper.GetStringValues(currentSiteUserIds.Tables[0], "UserID"))); } else { _currentSiteUsersFilter = "UserId is null"; } if (_currentUserId > 0) { SetupControls(); LoadData(); } }
/// <summary> /// Sends the emails. /// </summary> protected void Send() { // Check "modify" permission if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.Users", "Modify")) { RedirectToAccessDenied("CMS.Users", "Modify"); } // Check template name var templateName = usBlankPasswords.Value.ToString(); if (string.IsNullOrWhiteSpace(templateName)) { ShowError(GetString("Kadena.Email.TemplateNotSelected")); return; } var emailTemplate = EmailTemplateProvider.GetEmailTemplate(templateName, _siteId); // Validate From field if (string.IsNullOrEmpty(emailTemplate.TemplateFrom)) { ShowError(GetString("Kadena.Email.CorrectFromField")); return; } // Selecting users for emails var users = UserInfoProvider.GetUsers().WhereEmpty("UserPassword") .And() .WhereNotEmpty("Email"); if (_siteId > 0) { users = users .And() .WhereIn("UserID", UserSiteInfoProvider.GetUserSites() .WhereEquals("SiteID", _siteId) .Column("UserID")) .Columns("UserID", "Email", "UserGUID"); } if (users.Count == 0) { ShowInformation(GetString("Kadena.Email.NoUsersToSend")); return; } // Creating and sending email message. var resolver = MacroResolver.GetInstance(); var emailService = new EmailService(); foreach (var ui in users) { emailService.SendResetPasswordEmail(ui, emailTemplate, _siteId > 0 ? siteSelector.SiteName : null, resolver); } ShowConfirmation(GetString("system_email.emailsent")); }
/// <summary> /// Returns string with site ids where user is member. /// </summary> private string GetUserSites() { DataSet ds = UserSiteInfoProvider.GetUserSites("SiteID", "UserID = " + userId, null, 0); if (!DataHelper.DataSourceIsEmpty(ds)) { return(TextHelper.Join(";", SystemDataHelper.GetStringValues(ds.Tables[0], "SiteID"))); } return(String.Empty); }
/// <summary> /// Returns string with site ids where user is member. /// </summary> private string GetUserSites() { var data = UserSiteInfoProvider.GetUserSites().Where("UserID = " + userId).Columns("SiteID"); if (data.Any()) { return(TextHelper.Join(";", DataHelper.GetStringValues(data.Tables[0], "SiteID"))); } return(String.Empty); }
private bool CustomerIsOnCurrentSite(BaseInfo customerInfo) { var currentSiteID = SiteContext.CurrentSiteID; if (customerInfo.GetIntegerValue("CustomerSiteID", 0) == currentSiteID) { return(true); } var userID = customerInfo.GetIntegerValue("CustomerUserID", 0); return((userID > 0) && (UserSiteInfoProvider.GetUserSiteInfo(userID, currentSiteID) != null)); }
/// <summary> /// Returns <see cref="ObjectQuery"/> cointaing site user IDs. /// </summary> private ObjectQuery <UserSiteInfo> GetSiteUserIDs() { var dataQuery = UserSiteInfoProvider .GetUserSites() .Column(UserSiteInfo.TYPEINFO.ParentIDColumn); if (IsCMSDesk) { dataQuery.WhereEquals(UserSiteInfo.TYPEINFO.SiteIDColumn, SiteContext.CurrentSiteID); } return(dataQuery); }
/// <summary> /// Adds user to site. Called when the "Add user to site" button is pressed. /// Expects the CreateUser method to be run first. /// </summary> private bool AddUserToSite() { // Get the user UserInfo user = UserInfoProvider.GetUserInfo("MyNewUser"); if (user != null) { int userId = user.UserID; int siteId = CMSContext.CurrentSiteID; // Save the binding UserSiteInfoProvider.AddUserToSite(userId, siteId); return(true); } return(false); }
/// <summary> /// Adds user condition to given <see paramref="whereCondition"/>. /// </summary> private void AddUserCondition(WhereCondition whereCondition, int siteID) { whereCondition.WhereGreaterThan("UserID", 0); if (siteID > 0) { whereCondition.WhereIn("UserID", UserSiteInfoProvider.GetUserSites() .Column("UserID") .WhereEquals("SiteID", siteID)); } if (chkDisplayHidden.Visible && !chkDisplayHidden.Checked) { whereCondition.WhereIn("UserID", UserInfoProvider.GetUsers() .Column("UserID") .WhereEquals("UserIsHidden", 0) .Or() .WhereNull("UserIsHidden")); } }
/// <summary> /// Removes user from site. Called when the "Remove user from site" button is pressed. /// Expects the AddUserToSite method to be run first. /// </summary> private bool RemoveUserFromSite() { // Get the user UserInfo removeUser = UserInfoProvider.GetUserInfo("MyNewUser"); if (removeUser != null) { int siteId = CMSContext.CurrentSiteID; // Get the binding UserSiteInfo userSite = UserSiteInfoProvider.GetUserSiteInfo(removeUser.UserID, siteId); // Delete the binding UserSiteInfoProvider.DeleteUserSiteInfo(userSite); return(true); } return(false); }
/// <summary> /// Adds user condition to given <see paramref="whereCondition"/>. /// </summary> private void AddUserCondition(ref WhereCondition whereCondition, int siteID) { var userCondition = new WhereCondition().WhereGreaterThan("UserID", 0); if (siteID > 0 && IncludeSiteCondition()) { userCondition.WhereIn("UserID", UserSiteInfoProvider.GetUserSites() .Column("UserID") .WhereEquals("SiteID", siteID)); } if (chkDisplayHidden.Visible && !chkDisplayHidden.Checked) { userCondition.WhereIn("UserID", UserInfoProvider.GetUsers() .Column("UserID") .WhereEquals("UserIsHidden", 0) .Or() .WhereNull("UserIsHidden")); } whereCondition = new WhereCondition(whereCondition, userCondition); }
/// <summary> /// Page_load event. /// </summary> protected void Page_Load(object sender, EventArgs e) { // Check permissions and UI elements CurrentUserInfo user = CMSContext.CurrentUser; if (user != null) { if (!user.IsAuthorizedPerUIElement("CMS.Administration", "Roles")) { RedirectToCMSDeskUIElementAccessDenied("CMS.Administration", "Roles"); } if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Roles", "Read")) { RedirectToAccessDenied("CMS.Roles", "Read"); } } ScriptHelper.RegisterJQuery(Page); // Get user id and site Id from query userId = QueryHelper.GetInteger("userid", 0); // Show contentplaceholder where site selector can be shown CurrentMaster.DisplaySiteSelectorPanel = true; if ((SiteID > 0) && !CMSContext.CurrentUser.IsGlobalAdministrator) { plcSites.Visible = false; CurrentMaster.DisplaySiteSelectorPanel = false; } if (userId > 0) { // Check that only global administrator can edit global administrator's accouns ui = UserInfoProvider.GetUserInfo(userId); CheckUserAvaibleOnSite(ui); EditedObject = ui; if (!CheckGlobalAdminEdit(ui)) { plcTable.Visible = false; ShowError(GetString("Administration-User_List.ErrorGlobalAdmin")); return; } // Set site selector siteSelector.DropDownSingleSelect.AutoPostBack = true; siteSelector.AllowAll = false; siteSelector.AllowEmpty = false; // Global roles only for global admin if (CMSContext.CurrentUser.UserSiteManagerAdmin) { siteSelector.AllowGlobal = true; } // Only sites assigned to user siteSelector.UserId = userId; siteSelector.OnlyRunningSites = false; siteSelector.UniSelector.OnSelectionChanged += new EventHandler(UniSelector_OnSelectionChanged); if (!RequestHelper.IsPostBack()) { siteId = CMSContext.CurrentSiteID; // If user is member of current site if (UserSiteInfoProvider.GetUserSiteInfo(userId, siteId) != null) { // Force uniselector to preselect current site siteSelector.Value = siteId; } // Force to load data siteSelector.UpdateWhereCondition(); siteSelector.Reload(true); } // Get truly selected item siteId = ValidationHelper.GetInteger(siteSelector.Value, 0); } usRoles.OnSelectionChanged += new EventHandler(usRoles_OnSelectionChanged); string siteIDWhere = (siteId <= 0) ? " SiteID IS NULL " : " SiteID =" + siteId; usRoles.WhereCondition = siteIDWhere + " AND RoleGroupID IS NULL"; usRoles.SelectItemPageUrl = "~/CMSModules/Membership/Pages/Users/User_Edit_Add_Item_Dialog.aspx"; usRoles.ListingWhereCondition = siteIDWhere + " AND RoleGroupID IS NULL AND UserID=" + userId; usRoles.ReturnColumnName = "RoleID"; usRoles.DynamicColumnName = false; usRoles.GridName = "User_Role_List.xml"; usRoles.AdditionalColumns = "ValidTo"; usRoles.OnAdditionalDataBound += new CMSAdminControls_UI_UniSelector_UniSelector.AdditionalDataBoundEventHandler(usMemberships_OnAdditionalDataBound); // Exclude generic roles string genericWhere = null; ArrayList genericRoles = RoleInfoProvider.GetGenericRoles(); if (genericRoles.Count != 0) { foreach (string role in genericRoles) { genericWhere += "'" + role.Replace("'", "''") + "',"; } genericWhere = genericWhere.TrimEnd(','); usRoles.WhereCondition += " AND ( RoleName NOT IN (" + genericWhere + ") )"; } // Get the active roles for this site DataSet ds = UserRoleInfoProvider.GetUserRoles("UserID = " + userId + " AND RoleID IN (SELECT RoleID FROM CMS_Role WHERE SiteID IS NULL OR SiteID = " + siteId + ")", null, 0, "RoleID"); if (!DataHelper.DataSourceIsEmpty(ds)) { currentValues = TextHelper.Join(";", SystemDataHelper.GetStringValues(ds.Tables[0], "RoleID")); } // If not postback or site selection changed if (!RequestHelper.IsPostBack() || (siteId != Convert.ToInt32(ViewState["rolesOldSiteId"]))) { // Set values usRoles.Value = currentValues; } // Store selected site id ViewState["rolesOldSiteId"] = siteId; string script = "function setNewDateTime(date) {$j('#" + hdnDate.ClientID + "').val(date);}"; ScriptHelper.RegisterClientScriptBlock(Page, typeof(string), "key", ScriptHelper.GetScript(script)); string eventTarget = Request["__EVENTTARGET"]; string eventArgument = Request["__EVENTARGUMENT"]; if (eventTarget == ucCalendar.DateTimeTextBox.UniqueID) { if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Users", "ManageUserRoles")) { RedirectToAccessDenied("CMS.Users", "Manage user roles"); } int id = ValidationHelper.GetInteger(hdnDate.Value, 0); if (id != 0) { DateTime dt = ValidationHelper.GetDateTime(eventArgument, DateTimeHelper.ZERO_TIME); UserRoleInfo uri = UserRoleInfoProvider.GetUserRoleInfo(userId, id); if (uri != null) { uri.ValidTo = dt; UserRoleInfoProvider.SetUserRoleInfo(uri); // Invalidate user UserInfoProvider.InvalidateUser(userId); ShowChangesSaved(); } } } }
protected void SaveSites() { // Check "modify" permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Users", "Modify")) { RedirectToAccessDenied("CMS.Users", "Modify"); } // Remove old items string newValues = ValidationHelper.GetString(usSites.Value, null); string items = DataHelper.GetNewItemsInList(newValues, currentValues); if (!String.IsNullOrEmpty(items)) { string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (newItems != null) { // Add all new items to site foreach (string item in newItems) { int siteId = ValidationHelper.GetInteger(item, 0); // remove user from the site UserInfoProvider.RemoveUserFromSite(userId, siteId); // Remove user's allowed cultures for this site UserCultureInfoProvider.RemoveUserFromSite(userId, siteId); } } } // Add new items items = DataHelper.GetNewItemsInList(currentValues, newValues); if (!String.IsNullOrEmpty(items)) { string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (newItems != null) { bool falseValues = false; // Add all new items to site foreach (string item in newItems) { int siteId = ValidationHelper.GetInteger(item, 0); SiteInfo si = SiteInfoProvider.GetSiteInfo(siteId); if (si != null) { if (ui.IsEditor) { if (!UserInfoProvider.LicenseVersionCheck(si.DomainName, FeatureEnum.Editors, VersionActionEnum.Insert, false)) { falseValues = true; ShowError(GetString("LicenseVersion.EditorSite")); continue; } } if (!UserInfoProvider.LicenseVersionCheck(si.DomainName, FeatureEnum.SiteMembers, VersionActionEnum.Insert, false)) { falseValues = true; ShowError(GetString("LicenseVersion.SiteMembersSite")); continue; } // Check if email would be unique in site if (UserInfoProvider.IsEmailUnique(ui.Email, si.SiteName, ui.UserID)) { UserSiteInfoProvider.AddUserToSite(ui, si); } else { falseValues = true; ShowError(GetString("UserInfo.EmailAlreadyExistInSomeSite")); } } } // If some of sites could not be assigned reload selector value if (falseValues) { usSites.Value = GetUserSites(); usSites.Reload(true); } } } ShowChangesSaved(); }
/// <summary> /// Sets data to database. /// </summary> protected void btnOK_Click(object sender, EventArgs e) { string errorMessage = ""; string siteName = CMSContext.CurrentSiteName; if ((txtCustomerCompany.Text.Trim() == "" || !chkCompanyAccount.Checked) && ((txtCustomerFirstName.Text.Trim() == "") || (txtCustomerLastName.Text.Trim() == ""))) { errorMessage = GetString("Customers_Edit.errorInsert"); } // Check the following items if complete company info is required for company account if (errorMessage == "" && ECommerceSettings.RequireCompanyInfo(siteName) && chkCompanyAccount.Checked) { errorMessage = new Validator().NotEmpty(txtCustomerCompany.Text, GetString("customers_edit.errorCompany")) .NotEmpty(txtOraganizationID.Text, GetString("customers_edit.errorOrganizationID")) .NotEmpty(txtTaxRegistrationID.Text, GetString("customers_edit.errorTaxRegID")).Result; } if (errorMessage == "") { errorMessage = new Validator().IsEmail(txtCustomerEmail.Text.Trim(), GetString("customers_edit.erroremailformat")).Result; } plcCompanyInfo.Visible = chkCompanyAccount.Checked; if (errorMessage == "") { // If customer doesn't already exist, create new one if (mCustomer == null) { mCustomer = new CustomerInfo(); mCustomer.CustomerEnabled = true; mCustomer.CustomerUserID = CMSContext.CurrentUser.UserID; } int currencyId = selectCurrency.CurrencyID; if (ECommerceContext.CurrentShoppingCart != null) { ECommerceContext.CurrentShoppingCart.ShoppingCartCurrencyID = currencyId; } mCustomer.CustomerEmail = txtCustomerEmail.Text.Trim(); mCustomer.CustomerFax = txtCustomerFax.Text.Trim(); mCustomer.CustomerLastName = txtCustomerLastName.Text.Trim(); mCustomer.CustomerPhone = txtCustomerPhone.Text.Trim(); mCustomer.CustomerFirstName = txtCustomerFirstName.Text.Trim(); mCustomer.CustomerCountryID = drpCountry.CountryID; mCustomer.CustomerStateID = drpCountry.StateID; mCustomer.CustomerCreated = DateTime.Now; // Set customers's preferences mCustomer.CustomerPreferredCurrencyID = (currencyId > 0) ? currencyId : 0; mCustomer.CustomerPreferredPaymentOptionID = drpPayment.PaymentID; mCustomer.CustomerPreferredShippingOptionID = drpShipping.ShippingID; // Check if customer is registered if (mCustomer.CustomerIsRegistered) { // Find user-site binding UserSiteInfo userSite = UserSiteInfoProvider.GetUserSiteInfo(Customer.CustomerUserID, CMSContext.CurrentSiteID); if (userSite != null) { // Set user's preferences userSite.UserPreferredCurrencyID = mCustomer.CustomerPreferredCurrencyID; userSite.UserPreferredPaymentOptionID = mCustomer.CustomerPreferredPaymentOptionID; userSite.UserPreferredShippingOptionID = mCustomer.CustomerPreferredShippingOptionID; UserSiteInfoProvider.SetUserSiteInfo(userSite); } } if (chkCompanyAccount.Checked) { mCustomer.CustomerCompany = txtCustomerCompany.Text.Trim(); if (ECommerceSettings.ShowOrganizationID(siteName)) { mCustomer.CustomerOrganizationID = txtOraganizationID.Text.Trim(); } if (ECommerceSettings.ShowTaxRegistrationID(siteName)) { mCustomer.CustomerTaxRegistrationID = txtTaxRegistrationID.Text.Trim(); } } else { mCustomer.CustomerCompany = ""; mCustomer.CustomerOrganizationID = ""; mCustomer.CustomerTaxRegistrationID = ""; } // Update customer data CustomerInfoProvider.SetCustomerInfo(mCustomer); // Update corresponding user email UserInfo user = mCustomer.CustomerUser; if (user != null) { user.Email = mCustomer.CustomerEmail; UserInfoProvider.SetUserInfo(user); } // Update corresponding contact data ModuleCommands.OnlineMarketingUpdateContactFromExternalData(mCustomer, DataClassInfoProvider.GetDataClass(CustomerInfo.TYPEINFO.ObjectClassName).ClassContactOverwriteEnabled, ModuleCommands.OnlineMarketingGetCurrentContactID()); // Let others now that customer was created if (OnCustomerCrated != null) { OnCustomerCrated(); ShowChangesSaved(); } else { URLHelper.Redirect(URLHelper.AddParameterToUrl(URLRewriter.CurrentURL, "saved", "1")); } } else { //Show error ShowError(errorMessage); } }
private void EnsureAuthenticatedRole() { // Handle Global First RoleInfo AuthenticatedUserRole = GetOrCreateRole(_AuthenticatedRole, _AuthenticatedRoleDisplayName, _AuthenticatedRoleDescription, null); RoleInfo NotAuthenticatedUserRole = GetOrCreateRole(_NotAuthenticatedRole, _NotAuthenticatedRoleDisplayName, _NotAuthenticatedRoleDescription, null); RoleInfo EveryoneUserRole = GetOrCreateRole(_EveryoneRole, _EveryoneRoleDisplayName, _EveryoneRoleDescription, null); // Public user UserInfoProvider.GetUsers() .WhereEquals("username", "public") .WhereNotIn("UserID", UserRoleInfoProvider.GetUserRoles().WhereEquals("RoleID", NotAuthenticatedUserRole.RoleID) .TypedResult.Select(x => x.UserID).ToArray()).ForEachObject(x => { HandleUserRole(x.UserID, NotAuthenticatedUserRole.RoleID); }); // Non public users UserInfoProvider.GetUsers() .WhereNotEquals("username", "public") .WhereNotIn("UserID", UserRoleInfoProvider.GetUserRoles().WhereEquals("RoleID", AuthenticatedUserRole.RoleID).TypedResult.Select(x => x.UserID).ToArray()).ForEachObject(x => { HandleUserRole(x.UserID, AuthenticatedUserRole.RoleID); }); // Now everyone UserInfoProvider.GetUsers() .WhereNotIn("UserID", UserRoleInfoProvider.GetUserRoles().WhereEquals("RoleID", EveryoneUserRole.RoleID).TypedResult.Select(x => x.UserID).ToArray()).ForEachObject(x => { HandleUserRole(x.UserID, EveryoneUserRole.RoleID); }); // Now go through Site Users foreach (SiteInfo Site in SiteInfoProvider.GetSites()) { RoleInfo SiteAuthenticatedUserRole = GetOrCreateRole(_AuthenticatedRole, _AuthenticatedRoleDisplayName, _AuthenticatedRoleDescription, Site.SiteID); RoleInfo SiteNotAuthenticatedUserRole = GetOrCreateRole(_NotAuthenticatedRole, _NotAuthenticatedRoleDisplayName, _NotAuthenticatedRoleDescription, Site.SiteID); RoleInfo SiteEveryoneUserRole = GetOrCreateRole(_EveryoneRole, _EveryoneRoleDisplayName, _EveryoneRoleDescription, Site.SiteID); // Public user UserInfoProvider.GetUsers() .WhereEquals("username", "public") .WhereIn("UserID", UserSiteInfoProvider.GetUserSites().WhereEquals("SiteID", Site.SiteID).TypedResult.Select(x => x.UserID).ToArray()) .WhereNotIn("UserID", UserRoleInfoProvider.GetUserRoles().WhereEquals("RoleID", SiteAuthenticatedUserRole.RoleID) .TypedResult.Select(x => x.UserID).ToArray()).ForEachObject(x => { HandleUserRole(x.UserID, SiteAuthenticatedUserRole.RoleID); }); // Non public users UserInfoProvider.GetUsers() .WhereNotEquals("username", "public") .WhereIn("UserID", UserSiteInfoProvider.GetUserSites().WhereEquals("SiteID", Site.SiteID).TypedResult.Select(x => x.UserID).ToArray()) .WhereNotIn("UserID", UserRoleInfoProvider.GetUserRoles().WhereEquals("RoleID", SiteNotAuthenticatedUserRole.RoleID).TypedResult.Select(x => x.UserID).ToArray()).ForEachObject(x => { HandleUserRole(x.UserID, SiteNotAuthenticatedUserRole.RoleID); }); // Now everyone UserInfoProvider.GetUsers() .WhereIn("UserID", UserSiteInfoProvider.GetUserSites().WhereEquals("SiteID", Site.SiteID).TypedResult.Select(x => x.UserID).ToArray()) .WhereNotIn("UserID", UserRoleInfoProvider.GetUserRoles().WhereEquals("RoleID", SiteEveryoneUserRole.RoleID).TypedResult.Select(x => x.UserID).ToArray()).ForEachObject(x => { HandleUserRole(x.UserID, SiteEveryoneUserRole.RoleID); }); } }
protected void Page_Load(object sender, EventArgs e) { var user = MembershipContext.AuthenticatedUser; // Check UI profile for membership if (!user.IsAuthorizedPerUIElement("CMS.Users", "CmsDesk.Membership")) { RedirectToUIElementAccessDenied("CMS.Users", "CmsDesk.Membership"); } // Check "read" permission if (!user.IsAuthorizedPerResource("CMS.Membership", "Read")) { RedirectToAccessDenied("CMS.Membership", "Read"); } ScriptHelper.RegisterJQuery(Page); ui = UserInfoProvider.GetUserInfo(UserID); CheckUserAvaibleOnSite(ui); EditedObject = ui; if (!CheckGlobalAdminEdit(ui)) { plcTable.Visible = false; ShowError(GetString("Administration-User_List.ErrorGlobalAdmin")); return; } if ((SiteID > 0) && !MembershipContext.AuthenticatedUser.IsGlobalAdministrator) { CurrentMaster.DisplaySiteSelectorPanel = false; } else { CurrentMaster.DisplaySiteSelectorPanel = true; } var data = MembershipUserInfoProvider.GetMembershipUsers().Where("UserID = " + UserID); if (data.Any()) { currentValues = TextHelper.Join(";", DataHelper.GetStringValues(data.Tables[0], "MembershipID")); } if (!RequestHelper.IsPostBack()) { // Set values usMemberships.Value = currentValues; } // Init uni selector usMemberships.SelectItemPageUrl = "~/CMSModules/Membership/Pages/Users/User_Edit_Add_Item_Dialog.aspx"; usMemberships.ListingWhereCondition = "UserID=" + UserID; usMemberships.ReturnColumnName = "MembershipID"; usMemberships.DynamicColumnName = false; usMemberships.GridName = "User_Membership_List.xml"; usMemberships.OnAdditionalDataBound += usMemberships_OnAdditionalDataBound; usMemberships.OnSelectionChanged += usMemberships_OnSelectionChanged; usMemberships.AdditionalColumns = "ValidTo"; usMemberships.DialogWindowHeight = 760; // Init int siteID = SiteID; if (CurrentMaster.DisplaySiteSelectorPanel) { // Set site selector siteSelector.DropDownSingleSelect.AutoPostBack = true; siteSelector.AllowAll = false; siteSelector.AllowEmpty = false; siteSelector.AllowGlobal = true; // Only sites assigned to user siteSelector.UserId = UserID; siteSelector.OnlyRunningSites = false; siteSelector.UniSelector.OnSelectionChanged += new EventHandler(UniSelector_OnSelectionChanged); if (!RequestHelper.IsPostBack()) { siteID = SiteContext.CurrentSiteID; // If user is member of current site if (UserSiteInfoProvider.GetUserSiteInfo(UserID, siteID) != null) { // Force uniselector to preselect current site siteSelector.Value = siteID; } } siteID = siteSelector.SiteID; } string siteWhere = (siteID <= 0) ? "MembershipSiteID IS NULL" : "MembershipSiteID =" + siteID; usMemberships.ListingWhereCondition = SqlHelper.AddWhereCondition(usMemberships.ListingWhereCondition, siteWhere); usMemberships.WhereCondition = SqlHelper.AddWhereCondition(usMemberships.WhereCondition, siteWhere); string script = "function setNewDateTime(date) {$cmsj('#" + hdnDate.ClientID + "').val(date);}"; ScriptHelper.RegisterClientScriptBlock(Page, typeof(string), "NewDateUniSelectorScript", ScriptHelper.GetScript(script)); // Manage single item valid to change by calendar string eventTarget = Request[Page.postEventSourceID]; string eventArgument = Request[Page.postEventArgumentID]; if (eventTarget == ucCalendar.DateTimeTextBox.UniqueID) { // Check "modify" permission if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.Membership", "ManageUserMembership")) { RedirectToAccessDenied("CMS.Membership", "Manage user membership"); } int id = ValidationHelper.GetInteger(hdnDate.Value, 0); if (id != 0) { DateTime dt = ValidationHelper.GetDateTime(eventArgument, DateTimeHelper.ZERO_TIME); MembershipUserInfo mi = MembershipUserInfoProvider.GetMembershipUserInfo(id, UserID); if (mi != null) { mi.ValidTo = dt; MembershipUserInfoProvider.SetMembershipUserInfo(mi); // Invalidate changes if (ui != null) { ui.Generalized.Invalidate(false); } ShowChangesSaved(); } } } }
protected void SetupControls() { // If current control context is widget or livesite hide site selector if (ControlsHelper.CheckControlContext(this, ControlContext.WIDGET_PROPERTIES) || ControlsHelper.CheckControlContext(this, ControlContext.LIVE_SITE)) { ShowSiteFilter = false; } // Set prefix if not set if (ResourcePrefix == String.Empty) { // Set resource prefix based on mode if ((SelectionMode == SelectionModeEnum.Multiple) || (SelectionMode == SelectionModeEnum.MultipleButton) || (SelectionMode == SelectionModeEnum.MultipleTextBox)) { usUsers.ResourcePrefix = "selectusers"; } } // Add sites filter if (ShowSiteFilter) { usUsers.FilterControl = "~/CMSFormControls/Filters/SiteFilter.ascx"; usUsers.SetValue("DefaultFilterValue", (SiteID > 0) ? SiteID : SiteContext.CurrentSiteID); usUsers.SetValue("FilterMode", "user"); } // Generate WhereCondtion based on SelectUser's properties var usersWhereCondition = new WhereCondition(); var userTypeInfo = ObjectTypeManager.GetTypeInfo(UserInfo.OBJECT_TYPE); // Hide hidden users if (HideHiddenUsers) { var apparentUsersCondition = new WhereCondition().WhereEqualsOrNull("UserIsHidden", 0); usersWhereCondition.And(apparentUsersCondition); } // Hide disabled users if (HideDisabledUsers) { var enabledUsersCondition = new WhereCondition(UserInfoProvider.USER_ENABLED_WHERE_CONDITION); usersWhereCondition.And(enabledUsersCondition); } // Hide non-approved users if (HideNonApprovedUsers) { var approvedUserIDs = UserSettingsInfoProvider .GetUserSettings() .WhereEqualsOrNull("UserWaitingForApproval", 0) .Column("UserSettingsUserID"); var approvedUsersCondition = new WhereCondition().WhereIn(userTypeInfo.IDColumn, approvedUserIDs); usersWhereCondition.And(approvedUsersCondition); } // Select group users if (GroupID > 0) { var groupUserIDs = new ObjectQuery(PredefinedObjectType.GROUPMEMBER) .WhereEquals("MemberGroupID", GroupID) .Column("MemberUserID"); // Hide non-approved group users if (HideNonApprovedUsers) { groupUserIDs.WhereNull("MemberRejectedWhen"); } var usersInGroupCondition = new WhereCondition().WhereIn(userTypeInfo.IDColumn, groupUserIDs); usersWhereCondition.And(usersInGroupCondition); } // Select users in role if (RoleID > 0) { var usersInRoleIDs = UserRoleInfoProvider .GetUserRoles() .WhereEquals("RoleID", RoleID) .Column("UserID"); var usersInRoleCondition = new WhereCondition().WhereIn(userTypeInfo.IDColumn, usersInRoleIDs); usersWhereCondition.And(usersInRoleCondition); } // Select users depending on site; if filter enabled, where condition is added from filter itself if (!ShowSiteFilter && (SiteID >= 0) && !DisplayUsersFromAllSites) { int siteID = (SiteID == 0) ? SiteContext.CurrentSiteID : SiteID; var siteUserIDs = UserSiteInfoProvider .GetUserSites() .WhereEquals("SiteID", siteID) .Column("UserID"); var siteUsersCondition = new WhereCondition().WhereIn(userTypeInfo.IDColumn, siteUserIDs); if (TreatGlobalAdminsAsSiteUsers) { siteUsersCondition.Or(GetPrivilegeLevelCondition()); } usersWhereCondition.And(siteUsersCondition); } if (AlwaysShowGlobalAdministrators) { // New instance has to be created in order to produce brackets usersWhereCondition = new WhereCondition(usersWhereCondition).Or(GetPrivilegeLevelCondition()); } // Add additional users if ((AdditionalUsers != null) && (AdditionalUsers.Length > 0)) { var additionalUsersCondition = new WhereCondition().WhereIn(userTypeInfo.IDColumn, AdditionalUsers); new WhereCondition(usersWhereCondition).Or(additionalUsersCondition); } // Control where condition if (!String.IsNullOrEmpty(WhereCondition)) { usersWhereCondition = new WhereCondition(usersWhereCondition).And(new WhereCondition(WhereCondition)); } // Append generated where condition usUsers.WhereCondition = SqlHelper.AddWhereCondition(usUsers.WhereCondition, usersWhereCondition.ToString(expand: true)); pnlUpdate.ShowProgress = (SelectionMode == SelectionModeEnum.Multiple); }
/// <summary> /// Sets data to database. /// </summary> protected void btnOK_Click(object sender, EventArgs e) { // Check module permissions if (!ECommerceContext.IsUserAuthorizedToModifyCustomer()) { RedirectToAccessDenied("CMS.Ecommerce", "EcommerceModify OR ModifyCustomers"); } string errorMessage = ""; if ((txtCustomerCompany.Text.Trim() == "") && ((txtCustomerFirstName.Text.Trim() == "") || (txtCustomerLastName.Text.Trim() == ""))) { errorMessage = GetString("Customers_Edit.errorInsert"); } else if (ECommerceSettings.RequireCompanyInfo(CMSContext.CurrentSite.SiteName) && (txtCustomerCompany.Text.Trim() != "" || txtOraganizationID.Text.Trim() != "" || txtTaxRegistrationID.Text.Trim() != "")) { errorMessage = new Validator().NotEmpty(txtCustomerCompany.Text.Trim(), GetString("customers_edit.errorcompany")) .NotEmpty(txtOraganizationID.Text.Trim(), GetString("customers_edit.errororganizationid")) .NotEmpty(txtTaxRegistrationID.Text.Trim(), GetString("customers_edit.errortaxregid")).Result; } else if ((txtCustomerEmail.Text.Trim() != "") && !ValidationHelper.IsEmail(txtCustomerEmail.Text)) { errorMessage = GetString("Customers_Edit.errorEmail"); } if (chkHasLogin.Checked) { if (errorMessage == "") { errorMessage = new Validator().NotEmpty(txtUserName.Text.Trim(), GetString("Customer_Edit_Login_Edit.rqvUserName")) .NotEmpty(passStrength.Text, GetString("Customer_Edit_Login_Edit.rqvPassword1")) .NotEmpty(txtPassword2.Text, GetString("Customer_Edit_Login_Edit.rqvPassword2")).Result; } if ((errorMessage == "") && (passStrength.Text != txtPassword2.Text)) { errorMessage = GetString("Customer_Edit_Login_Edit.DifferentPasswords"); } // Check policy if ((errorMessage == "") && !passStrength.IsValid()) { errorMessage = UserInfoProvider.GetPolicyViolationMessage(CMSContext.CurrentSiteName); } // Check if user name is unique if (errorMessage == "") { UserInfo existingUser = UserInfoProvider.GetUserInfo(txtUserName.Text.Trim()); if (existingUser != null) { errorMessage = GetString("Customer_Edit_Login_Edit.UserExist"); } } } if (errorMessage == "") { CustomerInfo customerObj = CustomerInfoProvider.GetCustomerInfo(customerid); // If customer does not already exist, create new one if (customerObj == null) { customerObj = new CustomerInfo(); customerObj.CustomerSiteID = currentSiteId; customerObj.CustomerEnabled = true; } customerObj.CustomerEmail = txtCustomerEmail.Text.Trim(); customerObj.CustomerFax = txtCustomerFax.Text.Trim(); customerObj.CustomerLastName = txtCustomerLastName.Text.Trim(); customerObj.CustomerPhone = txtCustomerPhone.Text.Trim(); customerObj.CustomerFirstName = txtCustomerFirstName.Text.Trim(); customerObj.CustomerCompany = txtCustomerCompany.Text.Trim(); customerObj.CustomerCountryID = drpCountry.CountryID; customerObj.CustomerStateID = drpCountry.StateID; customerObj.CustomerOrganizationID = txtOraganizationID.Text.Trim(); customerObj.CustomerTaxRegistrationID = txtTaxRegistrationID.Text.Trim(); // Set customer's preferences customerObj.CustomerPreferredCurrencyID = drpCurrency.CurrencyID; customerObj.CustomerPreferredPaymentOptionID = drpPayment.PaymentID; customerObj.CustomerPreferredShippingOptionID = drpShipping.ShippingID; if (plcDiscounts.Visible && plcGlobalDiscount.Visible) { customerObj.CustomerDiscountLevelID = drpGlobalDiscountLevel.DiscountLevel; } // Only registered customer can be enabled/diabled if (customerObj.CustomerIsRegistered) { customerObj.CustomerEnabled = chkCustomerEnabled.Checked; } bool refreshHeader = true; using (CMSTransactionScope tr = new CMSTransactionScope()) { // Create user for customer if (chkHasLogin.Checked) { UserInfo ui = new UserInfo(); ui.UserName = txtUserName.Text.Trim(); ui.FullName = customerObj.CustomerFirstName + " " + customerObj.CustomerLastName; ui.IsGlobalAdministrator = false; ui.UserEnabled = true; UserInfoProvider.SetPassword(ui, passStrength.Text); UserInfoProvider.AddUserToSite(ui.UserName, CMSContext.CurrentSiteName); customerObj.CustomerEnabled = true; customerObj.CustomerUserID = ui.UserID; refreshHeader = true; } // Save customer CustomerInfoProvider.SetCustomerInfo(customerObj); // Enable/disable coresponding registered user if (customerObj.CustomerIsRegistered && !chkHasLogin.Checked) { UserInfo ui = UserInfoProvider.GetUserInfo(customerObj.CustomerUserID); // If the customer already has the record in the CMS_User table, update email if (ui != null) { ui.Email = customerObj.CustomerEmail; UserInfoProvider.SetUserInfo(ui); } // Save site specific values UserSiteInfo userSite = UserSiteInfoProvider.GetUserSiteInfo(customerObj.CustomerUserID, CMSContext.CurrentSiteID); if (userSite != null) { userSite.UserPreferredCurrencyID = drpCurrency.CurrencyID; userSite.UserPreferredPaymentOptionID = drpPayment.PaymentID; userSite.UserPreferredShippingOptionID = drpShipping.ShippingID; userSite.UserDiscountLevelID = drpDiscountLevel.DiscountLevel; UserSiteInfoProvider.SetUserSiteInfo(userSite); } } // Commit transaction tr.Commit(); } URLHelper.Redirect("Customer_Edit_General.aspx?customerid=" + Convert.ToString(customerObj.CustomerID) + "&saved=1&hidebreadcrumbs=" + QueryHelper.GetInteger("hidebreadcrumbs", 0) + "&siteId=" + SiteID + (refreshHeader ? "&refreshHeader=1" : "")); } else { lblError.Visible = true; lblError.Text = errorMessage; } }
protected void Page_Load(object sender, EventArgs e) { // Check the license LicenseHelper.CheckFeatureAndRedirect(URLHelper.GetCurrentDomain(), FeatureEnum.Ecommerce); bool ecommerceOnSite = ResourceSiteInfoProvider.IsResourceOnSite("CMS.Ecommerce", CMSContext.CurrentSiteName); // Check 'ConfigurationRead' permission if (!ecommerceOnSite || !CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Ecommerce", "ConfigurationRead")) { RedirectToAccessDenied("CMS.Ecommerce", "ConfigurationRead"); } // Check 'ConfigurationModify' permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Ecommerce", "ConfigurationModify")) { this.uniSelector.Enabled = false; } userId = QueryHelper.GetInteger("userid", 0); // Show contentplaceholder where site selector can be shown this.CurrentMaster.DisplaySiteSelectorPanel = true; if ((SiteID > 0) && !CMSContext.CurrentUser.IsGlobalAdministrator) { this.plcSites.Visible = false; this.CurrentMaster.DisplaySiteSelectorPanel = false; } if (userId > 0) { // Check that only global administrator can edit global administrator's accouns UserInfo ui = UserInfoProvider.GetUserInfo(userId); EditedObject = ui; if (!CheckGlobalAdminEdit(ui)) { plcTable.Visible = false; lblError.Text = GetString("Administration-User_List.ErrorGlobalAdmin"); lblError.Visible = true; return; } // Set site selector siteSelector.DropDownSingleSelect.AutoPostBack = true; siteSelector.AllowAll = false; siteSelector.AllowEmpty = false; // Global departments only for global admin if (CMSContext.CurrentUser.UserSiteManagerAdmin) { siteSelector.AllowGlobal = true; } // Only sites assigned to user siteSelector.UserId = userId; siteSelector.OnlyRunningSites = false; siteSelector.UniSelector.OnSelectionChanged += new EventHandler(UniSelector_OnSelectionChanged); if (!RequestHelper.IsPostBack()) { siteId = CMSContext.CurrentSiteID; // If user is member of current site if (UserSiteInfoProvider.GetUserSiteInfo(userId, siteId) != null) { // Force uniselector to preselect current site siteSelector.Value = siteId; } // Force to load data siteSelector.UpdateWhereCondition(); siteSelector.Reload(true); } // Get truly selected item siteId = ValidationHelper.GetInteger(siteSelector.Value, 0); DataSet ds = DepartmentInfoProvider.GetUserDepartments(userId); if (!DataHelper.DataSourceIsEmpty(ds)) { currentValues = TextHelper.Join(";", SqlHelperClass.GetStringValues(ds.Tables[0], "DepartmentID")); } // If not postback or site selection changed if (!RequestHelper.IsPostBack() || (siteId != Convert.ToInt32(ViewState["departmentsOldSiteId"]))) { // Set values uniSelector.Value = currentValues; } // Store selected site id ViewState["departmentsOldSiteId"] = siteId; } uniSelector.ButtonAddItems.Text = GetString("general.ok"); uniSelector.IconPath = GetImageUrl("Objects/Ecommerce_Department/object.png"); uniSelector.OnSelectionChanged += usSites_OnSelectionChanged; uniSelector.WhereCondition = (siteId <= 0) ? " DepartmentSiteID IS NULL " : " DepartmentSiteID =" + siteId; if (siteId > 0) { string siteName = SiteInfoProvider.GetSiteName(siteId); if (ECommerceSettings.AllowGlobalDepartments(siteName)) { uniSelector.WhereCondition += " OR (DepartmentSiteID IS NULL)"; } } }
/// <summary> /// Saves data to DB without validation and permissions check. /// </summary> private void SaveData() { // If customer does not already exist, create new one if (Customer == null) { Customer = new CustomerInfo(); Customer.CustomerSiteID = currentSiteId; Customer.CustomerEnabled = true; } Customer.CustomerEmail = txtCustomerEmail.Text.Trim().Truncate(100); Customer.CustomerFax = txtCustomerFax.Text.Trim(); Customer.CustomerLastName = txtCustomerLastName.Text.Trim(); Customer.CustomerPhone = txtCustomerPhone.Text.Trim(); Customer.CustomerFirstName = txtCustomerFirstName.Text.Trim(); Customer.CustomerCompany = txtCustomerCompany.Text.Trim(); Customer.CustomerCountryID = drpCountry.CountryID; Customer.CustomerStateID = drpCountry.StateID; Customer.CustomerOrganizationID = txtOraganizationID.Text.Trim(); Customer.CustomerTaxRegistrationID = txtTaxRegistrationID.Text.Trim(); // Set customer's preferences Customer.CustomerPreferredCurrencyID = drpCurrency.CurrencyID; Customer.CustomerPreferredPaymentOptionID = drpPayment.PaymentID; Customer.CustomerPreferredShippingOptionID = drpShipping.ShippingID; if (plcDiscounts.Visible && plcGlobalDiscount.Visible) { Customer.CustomerDiscountLevelID = drpGlobalDiscountLevel.DiscountLevel; } // Only registered customer can be enabled/disabled if (Customer.CustomerIsRegistered) { Customer.CustomerEnabled = chkCustomerEnabled.Checked; } using (CMSTransactionScope tr = new CMSTransactionScope()) { bool newUserCreated = false; // Create user for customer if (chkHasLogin.Checked) { UserInfo ui = new UserInfo(); ui.UserName = txtUserName.Text.Trim(); ui.FullName = Customer.CustomerFirstName + " " + Customer.CustomerLastName; ui.IsGlobalAdministrator = false; ui.UserEnabled = true; UserInfoProvider.SetPassword(ui, passStrength.Text); UserInfoProvider.AddUserToSite(ui.UserName, CMSContext.CurrentSiteName); Customer.CustomerEnabled = true; Customer.CustomerUserID = ui.UserID; chkCustomerEnabled.Checked = Customer.CustomerEnabled; newUserCreated = true; // Show fields requiring registered customer pnlEdit.Visible = false; pnlStatic.Visible = true; plcDiscounts.Visible = true; plcPreferences.Visible = true; chkHasLogin.Checked = false; plcSiteDiscount.Visible = true; lblUserNameStaticValue.Text = HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(ui.UserName)); if (AllowEditUser) { btnEditUser.OnClientClick = "modalDialog('" + CMSContext.ResolveDialogUrl("~/CMSModules/Membership/Pages/Users/User_Edit_Frameset.aspx") + "?userid=" + Customer.CustomerUserID + "', 'UserEdit', 950, 700); return false;"; btnEditUser.Visible = true; } // Hide global discount level selector when global levels not allowed plcGlobalDiscount.Visible = allowGlobalDiscountLevels; } // Save customer CustomerInfoProvider.SetCustomerInfo(Customer); // Enable/disable corresponding registered user if (Customer.CustomerIsRegistered && !newUserCreated) { UserInfo ui = UserInfoProvider.GetUserInfo(Customer.CustomerUserID); // If the customer already has the record in the CMS_User table, update email if (ui != null) { ui.Email = Customer.CustomerEmail; UserInfoProvider.SetUserInfo(ui); } // Save site specific values UserSiteInfo userSite = UserSiteInfoProvider.GetUserSiteInfo(Customer.CustomerUserID, currentSiteId); if (userSite != null) { userSite.UserPreferredCurrencyID = drpCurrency.CurrencyID; userSite.UserPreferredPaymentOptionID = drpPayment.PaymentID; userSite.UserPreferredShippingOptionID = drpShipping.ShippingID; userSite.UserDiscountLevelID = drpDiscountLevel.DiscountLevel; UserSiteInfoProvider.SetUserSiteInfo(userSite); } } // Commit transaction tr.Commit(); // Raise OnSaved event RaiseOnSaved(); } }
public void ProcessRequest(HttpContext context) { var authorizationResponse = new AuthorizationResponse(); // If response_type is "code id_token", the authorization endpoint will give us back //4 values. // i) code: used in order to exchange the access token // ii) id_token: contains user's authentication information in an encoded format // iii) scope: the access privileges requested for access token // iv) session_state: allows you to restore the previous state of your application // // If response_type is "code", the authorization endpoint will give us back 2 values: // i) code: used in order to exchange the access token // ii) state: provide by us; allows you to restore the previous state of your application // Begin by determining whether authorization (code) or hybrid flow (code id_token) if (OAuthConfiguration.ResponseType == "CodeIdToken") { authorizationResponse.PopulateFrom(context.Request.Form); } else { authorizationResponse.Code = context.Request.QueryString["code"]; authorizationResponse.State = context.Request.QueryString["state"]; } // Check if authorization code is present in the response. if (string.IsNullOrEmpty(authorizationResponse.Code)) { throw new Exception("Authorization code is not present in the response."); } var tokenEndpoint = OAuthConfiguration.Authority + "/" + OAuthConfiguration.TokenEndpointPath; var userInfoEndpoint = OAuthConfiguration.Authority + "/" + OAuthConfiguration.UserInfoEndpointPath; // Use the authorization code to retrieve access and id tokens. var tokenResponse = Task.Run(() => HttpClient.RequestAuthorizationCodeTokenAsync(new AuthorizationCodeTokenRequest { Address = tokenEndpoint, ClientId = OAuthConfiguration.ClientId, ClientSecret = OAuthConfiguration.ClientSecret, Code = authorizationResponse.Code, RedirectUri = $"{OAuthConfiguration.Host}/SignInOidc.ashx" })) .ConfigureAwait(false) .GetAwaiter() .GetResult(); if (tokenResponse.IsError) { throw new Exception("There was an error retrieving the access token.", tokenResponse.Exception); } // If using an authorization code flow, we get the id_token from the token endpoint // so we populate it now into the authorizationResponse object if (OAuthConfiguration.ResponseType == "Code") { authorizationResponse.IdToken = tokenResponse.Json["id_token"].ToString(); } // Get user claims by calling the user info endpoint using the access token. var userInfoResponse = Task.Run(() => HttpClient.GetUserInfoAsync(new UserInfoRequest { Address = userInfoEndpoint, Token = tokenResponse.AccessToken })) .ConfigureAwait(false) .GetAwaiter() .GetResult(); //LOGGING// StreamWriter sw5 = new StreamWriter("c:\\docs\\logfile1.txt", append: true); sw5.WriteLine("The token response is: " + tokenResponse.Json); sw5.WriteLine("The endpoint is: " + userInfoEndpoint); sw5.WriteLine("The error is: " + userInfoResponse.Error); sw5.WriteLine("The raw is: " + userInfoResponse.Raw); sw5.Close(); //END LOGGING// if (userInfoResponse.IsError) { throw new Exception("There was an error retrieving user information from authority.", userInfoResponse.Exception); } // It is important to get the email claim and check if the user exists locally. var userClaims = userInfoResponse.Claims; //Commented out from original code //var userName = userClaims.GetValueOrDefault(OAuthConfiguration.UserNameClaim ?? JwtClaimTypes.Name); var userName = userInfoResponse.Json[OAuthConfiguration.UserNameClaim].ToString(); var email = userClaims.GetValueOrDefault(JwtClaimTypes.Email); if (string.IsNullOrEmpty(userName)) { throw new Exception("Username cannot be found in user claims."); } // Check if the user exists in Kentico. UserInfo userInfo = UserInfoProvider.GetUserInfo(userName); // Get admin claim so we can decide if we need to assign a specific role to the user. var isAdmin = userClaims.GetValueOrDefault <bool>(CustomClaimTypes.Admin); // In this case we need to create the user. if (userInfo == null) { var firstName = userClaims.GetValueOrDefault(JwtClaimTypes.GivenName); var lastName = userClaims.GetValueOrDefault(JwtClaimTypes.FamilyName); // Creates a new user object. userInfo = new UserInfo { // Sets the user properties. Email = email, Enabled = true, FirstName = firstName, FullName = $"{firstName} {lastName}", IsExternal = true, LastName = lastName, SiteIndependentPrivilegeLevel = isAdmin ? UserPrivilegeLevelEnum.GlobalAdmin : UserPrivilegeLevelEnum.None, UserCreated = DateTime.UtcNow, UserName = userName, UserIsDomain = true }; // Created user must first be created and saved so we can update other properties in the next steps. UserInfoProvider.SetUserInfo(userInfo); UserSiteInfoProvider.AddUserToSite(userInfo.UserID, SiteContext.CurrentSite.SiteID); var handler = UserCreated; handler?.Invoke(this, new UserCreatedEventArgs { User = userInfo, Claims = userClaims }); } else { // Update existing user's privilege level to reflect a possible change made on IdentityServer. if (isAdmin) { userInfo.SiteIndependentPrivilegeLevel = UserPrivilegeLevelEnum.GlobalAdmin; } userInfo.UserIsDomain = true; var userCurrentSite = UserSiteInfoProvider.GetUserSiteInfo(userInfo.UserID, SiteContext.CurrentSiteID); if (userCurrentSite == null) { UserSiteInfoProvider.AddUserToSite(userInfo.UserID, SiteContext.CurrentSiteID); } UserInfoProvider.SetUserInfo(userInfo); } // Log the user in. AuthenticateUser(userInfo.UserName, true); CookiesHelper.SetValue( name: CookieNames.OAuthCookie, values: new Dictionary <string, string> { { OidcConstants.TokenTypes.AccessToken, tokenResponse.AccessToken }, { OidcConstants.TokenTypes.RefreshToken, tokenResponse.RefreshToken }, { OidcConstants.TokenResponse.ExpiresIn, tokenResponse.ExpiresIn.ToString() }, { OidcConstants.ResponseTypes.IdToken, tokenResponse.IdentityToken } }, expires: DateTime.UtcNow + TimeSpan.FromSeconds(tokenResponse.ExpiresIn) ); // Try to retrieve state in order to navigate the user back to where he initially requested. var returnUrl = "/"; if (!string.IsNullOrEmpty(authorizationResponse.State)) { var stateProvider = new StateProvider <string>(); var state = stateProvider.RetrieveState(authorizationResponse.State); if (state != "") { returnUrl = state; } else { returnUrl = OAuthConfiguration.Host; } } //LOGGING// StreamWriter sw6 = new StreamWriter("c:\\docs\\logfile1.txt", append: true); sw6.WriteLine("The URL is: " + returnUrl); sw6.Close(); //END LOGGING// // Redirect to the requested page. context.Response.Redirect(returnUrl); HttpContext.Current.ApplicationInstance.CompleteRequest(); }
/// <summary> /// Page_load event. /// </summary> protected void Page_Load(object sender, EventArgs e) { // Check permissions and UI elements var user = MembershipContext.AuthenticatedUser; if (user != null) { if (!user.IsAuthorizedPerUIElement("CMS.Users", "CmsDesk.Roles")) { RedirectToUIElementAccessDenied("CMS.Users", "CmsDesk.Roles"); } if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.Roles", "Read")) { RedirectToAccessDenied("CMS.Roles", "Read"); } } ScriptHelper.RegisterJQuery(Page); // Get user id and site Id from query mUserId = QueryHelper.GetInteger("userid", 0); // Show content placeholder where site selector can be shown CurrentMaster.DisplaySiteSelectorPanel = true; if ((SiteID > 0) && !MembershipContext.AuthenticatedUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Admin)) { plcSites.Visible = false; CurrentMaster.DisplaySiteSelectorPanel = false; } if (mUserId > 0) { // Check that only global administrator can edit global administrator's accounts mUserInfo = UserInfoProvider.GetUserInfo(mUserId); CheckUserAvaibleOnSite(mUserInfo); EditedObject = mUserInfo; if (!CheckGlobalAdminEdit(mUserInfo)) { plcTable.Visible = false; ShowError(GetString("Administration-User_List.ErrorGlobalAdmin")); return; } // Set site selector siteSelector.DropDownSingleSelect.AutoPostBack = true; siteSelector.AllowAll = false; siteSelector.AllowEmpty = false; // Global roles only for global admin if (MembershipContext.AuthenticatedUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.GlobalAdmin)) { siteSelector.AllowGlobal = true; } // Only sites assigned to user siteSelector.UserId = mUserId; siteSelector.OnlyRunningSites = false; siteSelector.UniSelector.OnSelectionChanged += UniSelector_OnSelectionChanged; if (!RequestHelper.IsPostBack()) { mSiteId = SiteContext.CurrentSiteID; // If user is member of current site if (UserSiteInfoProvider.GetUserSiteInfo(mUserId, mSiteId) != null) { // Force uniselector to preselect current site siteSelector.Value = mSiteId; } // Force to load data siteSelector.Reload(true); } // Get truly selected item mSiteId = ValidationHelper.GetInteger(siteSelector.Value, 0); } usRoles.OnSelectionChanged += usRoles_OnSelectionChanged; string siteIDWhere = (mSiteId <= 0) ? " SiteID IS NULL " : " SiteID =" + mSiteId; usRoles.WhereCondition = siteIDWhere + " AND RoleGroupID IS NULL"; usRoles.SelectItemPageUrl = "~/CMSModules/Membership/Pages/Users/User_Edit_Add_Item_Dialog.aspx"; usRoles.ListingWhereCondition = siteIDWhere + " AND RoleGroupID IS NULL AND UserID=" + mUserId; usRoles.ReturnColumnName = "RoleID"; usRoles.DynamicColumnName = false; usRoles.GridName = "User_Role_List.xml"; usRoles.AdditionalColumns = "ValidTo"; usRoles.OnAdditionalDataBound += usMemberships_OnAdditionalDataBound; usRoles.DialogWindowHeight = 760; // Exclude generic roles string genericWhere = String.Empty; ArrayList genericRoles = RoleInfoProvider.GetGenericRoles(); if (genericRoles.Count != 0) { foreach (string role in genericRoles) { genericWhere += "'" + SqlHelper.EscapeQuotes(role) + "',"; } genericWhere = genericWhere.TrimEnd(','); usRoles.WhereCondition += " AND ( RoleName NOT IN (" + genericWhere + ") )"; } // Get the active roles for this site var roleIds = new IDQuery <RoleInfo>().Where(siteIDWhere).Column("RoleID"); var data = UserRoleInfoProvider.GetUserRoles().WhereEquals("UserID", mUserId).And().WhereIn("RoleID", roleIds).Columns("RoleID").TypedResult; if (data.Any()) { mCurrentValues = TextHelper.Join(";", data.Select(i => i.RoleID)); } // If not postback or site selection changed if (!RequestHelper.IsPostBack() || (mSiteId != Convert.ToInt32(ViewState["rolesOldSiteId"]))) { // Set values usRoles.Value = mCurrentValues; } // Store selected site id ViewState["rolesOldSiteId"] = mSiteId; string script = "function setNewDateTime(date) {$cmsj('#" + hdnDate.ClientID + "').val(date);}"; ScriptHelper.RegisterClientScriptBlock(Page, typeof(string), "key", ScriptHelper.GetScript(script)); string eventTarget = Request[postEventSourceID]; string eventArgument = Request[postEventArgumentID]; if (eventTarget == ucCalendar.DateTimeTextBox.UniqueID) { if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.Users", "ManageUserRoles")) { RedirectToAccessDenied("CMS.Users", "Manage user roles"); } int id = ValidationHelper.GetInteger(hdnDate.Value, 0); if (id != 0) { DateTime dt = ValidationHelper.GetDateTime(eventArgument, DateTimeHelper.ZERO_TIME); UserRoleInfo uri = UserRoleInfoProvider.GetUserRoleInfo(mUserId, id); if (uri != null) { uri.ValidTo = dt; UserRoleInfoProvider.SetUserRoleInfo(uri); // Invalidate user UserInfoProvider.InvalidateUser(mUserId); ShowChangesSaved(); } } } }
private static void ImportWorker_DoWork(object sender, DoWorkEventArgs e) { try { BackgroundWorker worker = (BackgroundWorker)sender; // Save import profile if (ImportProfile.SaveImportProfile && !ImportProfile.UsesConsole) { SaveFile(SaveImportProfile); } // Decide whether to import if (!ImportProfile.ImportNow && !ImportProfile.UsesConsole) { return; } using (new CMSActionContext() { LogEvents = false, ContinuousIntegrationAllowObjectSerialization = false }) { #region "Initialization" // Import canceled if (worker.CancellationPending) { e.Cancel = true; return; } DateTime start = DateTime.Now; // Initialize CMS context CMSInit(); if (ImportProfile.UsesConsole) { // Ensure object in case they are not present in import profile EnsureObjects(); } if (ImportProfile.ImportUsersOnlyFromSelectedRoles) { // Narrow down imported users according to imported roles ImportProfile.Users.Clear(); } // Import canceled if (worker.CancellationPending) { e.Cancel = true; return; } // Initialize cumulative changed users and roles storages var rolesChanged = new CumulatedChanges(WellKnownEventLogEventsEnum.RolesCreated, WellKnownEventLogEventsEnum.RolesUpdated, WellKnownEventLogEventsEnum.RolesDeleted); var usersChanged = new CumulatedChanges(WellKnownEventLogEventsEnum.UsersCreated, WellKnownEventLogEventsEnum.UsersUpdated, WellKnownEventLogEventsEnum.UsersDeleted); #endregion // Delete non-existing objects (this also prevents conflicting code names) if (ImportProfile.DeleteNotExistingObjects) { DeleteNonExistingObjects(usersChanged, rolesChanged); } #region "Role import" foreach (var siteInfo in ImportProfile .Sites .Select(site => SiteInfoProvider.GetSiteInfo(site.Key)) .Where(info => info != null)) { foreach (Guid groupGuid in ImportProfile.Groups) { // Import canceled if (worker.CancellationPending) { e.Cancel = true; return; } // Try to get group IPrincipalObject group = PrincipalProvider.GetPrincipalObject(groupGuid); // If group is still null if (group == null) { MessageLog.LogEvent(ResHelper.GetString("Log_SkippingNonExistingObject")); warnings++; // If deleting of not existing objects is enabled if (ImportProfile.DeleteNotExistingObjects) { DeleteRole(siteInfo, groupGuid); } } else { // Get role description string roleDescription = String.Empty; if (ImportProfile.ImportRoleDescription && (group.Description != null)) { roleDescription = group.Description; } // Get correct role name format string roleCodeName = group.GetCMSCodeName(true); // Get role display name string roleDisplayName = group.GetCMSDisplayName(); // Get safe role name roleCodeName = ValidationHelper.GetSafeRoleName(roleCodeName, siteInfo.SiteName); if (!String.IsNullOrEmpty(roleCodeName)) { // Add message to log MessageLog.LogEvent(ResHelper.GetString("Log_ImportingRole", roleDisplayName, CMS.Helpers.ResHelper.LocalizeString(siteInfo.DisplayName))); // Import role ImportRole(roleCodeName, roleDisplayName, siteInfo.SiteID, roleDescription, groupGuid, ImportProfile.UpdateObjectData, rolesChanged); if (ImportProfile.ImportUsersOnlyFromSelectedRoles) { ImportProfile.Users.AddRange(PrincipalProvider.GetUsersOf(group).Select(u => u.Identifier)); } } else { // Add message to log MessageLog.LogEvent(ResHelper.GetString("Log_SkippingEmptyRolename", group.Identifier)); warnings++; } } } } // Log created and updated and removed roles to EventLog rolesChanged.WriteEventsToEventLog(); #endregion #region "User import" foreach (var user in ImportProfile .Users .Distinct() .Select(userGuid => PrincipalProvider.GetPrincipalObject(userGuid))) { // Import canceled if (worker.CancellationPending) { e.Cancel = true; return; } if (user == null) { MessageLog.LogEvent(ResHelper.GetString("Log_SkippingNonExistingObject")); continue; } string domainName = user.GetCMSCodeName(true); if (!String.IsNullOrEmpty(domainName)) { // Get user info object UserInfo userInfo = (UserInfoProvider.GetUserInfoByGUID((Guid)user.Identifier) ?? UserInfoProvider.GetUserInfo(domainName)); bool newUser = (userInfo == null); // When is desired to import new users only from selected roles if (newUser && ImportProfile.ImportNewUsersOnlyFromSelectedRoles) { // Skip users that does not belong to one of selected role bool skip = ImportProfile.Groups.Cast <Guid>().All(groupGuid => !user.IsPrincipalInGroup(groupGuid)); if (skip) { MessageLog.LogEvent(ResHelper.GetString("Log_SkippingDoesNotBelongToSelectedRole", domainName)); continue; } } if (ImportProfile.UpdateObjectData || newUser) { if (userInfo == null) { userInfo = new UserInfo(); // Add message to log MessageLog.LogEvent(ResHelper.GetString("Log_ImportingUser", domainName)); } else { // Add message to log MessageLog.LogEvent(ResHelper.GetString("Log_UpdatingUser", domainName)); } using (var transaction = new CMSTransactionScope()) { if (newUser) { userInfo.UserIsDomain = true; userInfo.UserGUID = (Guid)user.Identifier; // Set privilege level UserPrivilegeLevelEnum privilegeLevel = ImportProfile.ConfigureAsCMSEditor ? UserPrivilegeLevelEnum.Editor : UserPrivilegeLevelEnum.None; userInfo.SiteIndependentPrivilegeLevel = privilegeLevel; } if (userInfo.UserIsDomain) { // Set user's properties userInfo.UserIsExternal = true; userInfo.UserName = domainName; userInfo.Enabled = ValidationHelper.GetBoolean(user.Enabled, true); // Bind properties foreach (KeyValuePair <string, string> property in ImportProfile.UserProperties) { // Get attribute object attribute = user.GetProperty(property.Value); if (attribute != null) { try { string attrValue; // Get string representation of the attribute if (attribute is float || attribute is double || attribute is decimal) { attrValue = String.Format(CultureInfo.InvariantCulture, "{0}", attribute); } else if (attribute.GetType() == typeof(byte[])) { attrValue = PrincipalProvider.GetSID(attribute); } else if (attribute.GetType().BaseType == typeof(MarshalByRefObject)) { attrValue = PrincipalProvider.GetTimeFromInterval(attribute); } else { attrValue = attribute.ToString(); } // Set property userInfo.SetValue(property.Key, LimitLengthForField(attrValue, property.Key)); } catch { MessageLog.LogEvent(ResHelper.GetString("Log_ErrorParsingAttr", property.Value)); warnings++; } } else { FormFieldInfo field = UserFormInfo.GetFormField(property.Key); userInfo.SetValue(property.Key, field.GetPropertyValue(FormFieldPropertyEnum.DefaultValue)); } } // Create full name if empty if (String.IsNullOrEmpty(userInfo.FullName)) { userInfo.FullName = user.GetCMSDisplayName(); } // Store user info object and its user-settings if (userInfo.ChangedColumns().Any()) { // Store created/updated user for EventLog // User name is used, because AD accounts does not have to have first and/or given name specified (e.g. Guest, …) usersChanged.Add(userInfo.UserGUID, userInfo.UserName, newUser ? ChangeActionEnum.Created : ChangeActionEnum.Updated); UserInfoProvider.SetUserInfo(userInfo); } } else { MessageLog.LogEvent(ResHelper.GetString("Log_UserIsNotDomain", userInfo.UserName)); warnings++; } transaction.Commit(); } } else { MessageLog.LogEvent(ResHelper.GetString("Log_SkippingExistingUser", domainName)); } // Import canceled if (worker.CancellationPending) { e.Cancel = true; return; } // Assign user to sites and roles (for domain users only) if (!userInfo.UserIsDomain) { continue; } #region "Membership (roles) synchronization" if (!newUser && !ImportProfile.UpdateMemberships && !ImportProfile.UpdateMemberships) { // No membership synchronization will be performed continue; } // Initialize collection to cumulate membership changes var memberShipChanges = new CumulatedRolesMembership(); // Load all user roles from DB var userRoles = new HashSet <RoleInfo>(newUser ? Enumerable.Empty <RoleInfo>() // non-existing user cannot be present in a single role (in DB) : RoleInfoProvider .GetRoles() .WhereIn("RoleID", UserRoleInfoProvider .GetUserRoles() .WhereEquals("UserID", userInfo.UserID) .Column("RoleID")) .Columns("RoleID", "RoleGUID", "RoleDisplayName", "RoleIsDomain")); // Store user's roles before membership synchronization memberShipChanges.SetRolesBefore(userRoles); foreach (KeyValuePair <string, List <Guid> > site in ImportProfile.Sites) { // Get site info object var siteInfo = SiteInfoProvider.GetSiteInfo(site.Key); if (siteInfo != null) { try { // Add user to this site UserSiteInfoProvider.AddUserToSite(userInfo, siteInfo); } catch (Exception ex) { MessageLog.LogEvent(ResHelper.GetString("Log_GeneralWarning", ex.Message)); warnings++; } // Assign user to roles already existing in CMS if (newUser || ImportProfile.UpdateMemberships) { SetMemberships(user, userInfo, siteInfo, userRoles, site); } // Remove user from roles they is member no more if (!newUser && ImportProfile.UpdateMemberships) { RemoveExcessiveMemberships(user, userInfo, userRoles); } } else { MessageLog.LogEvent(ResHelper.GetString("Log_SiteNotExist", site.Key)); warnings++; } } // Store user's roles after membership synchronization memberShipChanges.SetRolesAfter(userRoles); // Log created and removed memberships to EventLog memberShipChanges.WriteEventsToEventLog(userInfo.UserName); #endregion } else { // Add message to log MessageLog.LogEvent(ResHelper.GetString("Log_SkippingEmptyUsername", user.Identifier)); warnings++; } } // Log created and updated and deleted users to EventLog usersChanged.WriteEventsToEventLog(); #endregion // Import canceled if (worker.CancellationPending) { e.Cancel = true; return; } TimeSpan duration = DateTime.Now - start; if (!worker.CancellationPending) { // Add message to log MessageLog.LogEvent(warnings == 0 ? ResHelper.GetString("Log_ImportComplete", duration.Hours, duration.Minutes, duration.Seconds) : ResHelper.GetString("Log_ImportCompleteWithWarnings", warnings, duration.Hours, duration.Minutes, duration.Seconds)); } } } catch (Exception ex) { MessageLog.LogError(ResHelper.GetString("Error_General"), ex); } }
protected void Page_Load(object sender, EventArgs e) { CurrentUserInfo user = CMSContext.CurrentUser; // Check UI profile for membership if (!user.IsAuthorizedPerUIElement("CMS.Administration", "Membership")) { RedirectToCMSDeskUIElementAccessDenied("CMS.Administration", "Membership"); } // Check "read" permission if (!user.IsAuthorizedPerResource("CMS.Membership", "Read")) { RedirectToAccessDenied("CMS.Membership", "Read"); } ScriptHelper.RegisterJQuery(Page); ui = UserInfoProvider.GetUserInfo(UserID); CheckUserAvaibleOnSite(ui); EditedObject = ui; if (!CheckGlobalAdminEdit(ui)) { plcTable.Visible = false; lblErrorDeskAdmin.Text = GetString("Administration-User_List.ErrorGlobalAdmin"); lblErrorDeskAdmin.Visible = true; return; } DataSet ds = MembershipUserInfoProvider.GetMembershipUsers("UserID = " + UserID, String.Empty); if ((SiteID > 0) && !CMSContext.CurrentUser.IsGlobalAdministrator) { this.CurrentMaster.DisplaySiteSelectorPanel = false; } else { this.CurrentMaster.DisplaySiteSelectorPanel = true; } if (!DataHelper.DataSourceIsEmpty(ds)) { currentValues = TextHelper.Join(";", SqlHelperClass.GetStringValues(ds.Tables[0], "MembershipID")); } if (!RequestHelper.IsPostBack()) { // Set values usMemberships.Value = currentValues; } // Init uni selector usMemberships.SelectItemPageUrl = "~/CMSModules/Membership/Pages/Users/User_Edit_Add_Item_Dialog.aspx"; usMemberships.ListingWhereCondition = "UserID=" + UserID; usMemberships.ReturnColumnName = "MembershipID"; usMemberships.DynamicColumnName = false; usMemberships.GridName = "User_Membership_List.xml"; usMemberships.OnAdditionalDataBound += new CMSAdminControls_UI_UniSelector_UniSelector.AdditionalDataBoundEventHandler(usMemberships_OnAdditionalDataBound); usMemberships.OnSelectionChanged += new EventHandler(usMemberships_OnSelectionChanged); usMemberships.AdditionalColumns = "ValidTo"; // Init int siteID = SiteID; if (this.CurrentMaster.DisplaySiteSelectorPanel) { // Set site selector siteSelector.DropDownSingleSelect.AutoPostBack = true; siteSelector.AllowAll = false; siteSelector.AllowEmpty = false; siteSelector.AllowGlobal = true; // Only sites assigned to user siteSelector.UserId = UserID; siteSelector.OnlyRunningSites = false; siteSelector.UniSelector.OnSelectionChanged += new EventHandler(UniSelector_OnSelectionChanged); if (!RequestHelper.IsPostBack()) { siteID = CMSContext.CurrentSiteID; // If user is member of current site if (UserSiteInfoProvider.GetUserSiteInfo(UserID, siteID) != null) { // Force uniselector to preselect current site siteSelector.Value = siteID; } } siteID = siteSelector.SiteID; } if (!String.IsNullOrEmpty(currentValues)) { usMemberships.WhereCondition = "MembershipID NOT IN (" + currentValues.Replace(';', ',') + ")"; } string siteWhere = (siteID <= 0) ? "MembershipSiteID IS NULL" : "MembershipSiteID =" + siteID; usMemberships.ListingWhereCondition = SqlHelperClass.AddWhereCondition(usMemberships.ListingWhereCondition, siteWhere); usMemberships.WhereCondition = SqlHelperClass.AddWhereCondition(usMemberships.WhereCondition, siteWhere); string script = "function setNewDateTime(date) {$j('#" + hdnDate.ClientID + "').val(date);}"; ScriptHelper.RegisterClientScriptBlock(Page, typeof(string), "NewDateUniSelectorScript", ScriptHelper.GetScript(script)); // Manage single item valid to change by calendar string eventTarget = Request["__EVENTTARGET"]; string eventArgument = Request["__EVENTARGUMENT"]; if (eventTarget == ucCalendar.DateTimeTextBox.UniqueID) { // Check "modify" permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Membership", "ManageUserMembership")) { RedirectToAccessDenied("CMS.Membership", "Manage user membership"); } int id = ValidationHelper.GetInteger(hdnDate.Value, 0); if (id != 0) { DateTime dt = ValidationHelper.GetDateTime(eventArgument, DateTimeHelper.ZERO_TIME); MembershipUserInfo mi = MembershipUserInfoProvider.GetMembershipUserInfo(id, UserID); if (mi != null) { mi.ValidTo = dt; MembershipUserInfoProvider.SetMembershipUserInfo(mi); // Invalidate changes if (ui != null) { ui.Invalidate(); } this.lblInfo.Visible = true; } } } }
protected void Page_Load(object sender, EventArgs e) { // Check the license LicenseHelper.CheckFeatureAndRedirect(RequestContext.CurrentDomain, FeatureEnum.Ecommerce); bool ecommerceOnSite = ResourceSiteInfoProvider.IsResourceOnSite(ModuleName.ECOMMERCE, SiteContext.CurrentSiteName); // Check 'ConfigurationRead' permission if (!ecommerceOnSite || !MembershipContext.AuthenticatedUser.IsAuthorizedPerResource(ModuleName.ECOMMERCE, EcommercePermissions.CONFIGURATION_READ)) { RedirectToAccessDenied(ModuleName.ECOMMERCE, EcommercePermissions.CONFIGURATION_READ); } // Check 'ConfigurationModify' permission if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource(ModuleName.ECOMMERCE, EcommercePermissions.CONFIGURATION_MODIFY)) { uniSelector.Enabled = false; } userId = QueryHelper.GetInteger("userid", 0); // Show contentplaceholder where site selector can be shown CurrentMaster.DisplaySiteSelectorPanel = true; if ((SiteID > 0) && !MembershipContext.AuthenticatedUser.IsGlobalAdministrator) { plcSites.Visible = false; CurrentMaster.DisplaySiteSelectorPanel = false; } if (userId > 0) { // Check that only global administrator can edit global administrator's accouns UserInfo ui = UserInfoProvider.GetUserInfo(userId); EditedObject = ui; if (!CheckGlobalAdminEdit(ui)) { plcTable.Visible = false; // Show error message ShowError(GetString("Administration-User_List.ErrorGlobalAdmin")); return; } // Set site selector siteSelector.DropDownSingleSelect.AutoPostBack = true; siteSelector.AllowAll = false; siteSelector.AllowEmpty = false; // Global departments only for global admin if (MembershipContext.AuthenticatedUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.GlobalAdmin)) { siteSelector.AllowGlobal = true; } // Only sites assigned to user siteSelector.UserId = userId; siteSelector.OnlyRunningSites = false; siteSelector.UniSelector.OnSelectionChanged += UniSelector_OnSelectionChanged; if (!RequestHelper.IsPostBack()) { siteId = SiteContext.CurrentSiteID; // If user is member of current site if (UserSiteInfoProvider.GetUserSiteInfo(userId, siteId) != null) { // Force uniselector to preselect current site siteSelector.Value = siteId; } // Force to load data siteSelector.Reload(true); } // Get truly selected item siteId = ValidationHelper.GetInteger(siteSelector.Value, 0); DataSet ds = DepartmentInfoProvider.GetUserDepartments(userId); if (!DataHelper.DataSourceIsEmpty(ds)) { currentValues = TextHelper.Join(";", DataHelper.GetStringValues(ds.Tables[0], "DepartmentID")); } // If not postback or site selection changed if (!RequestHelper.IsPostBack() || (siteId != Convert.ToInt32(ViewState["departmentsOldSiteId"]))) { // Set values uniSelector.Value = currentValues; } // Store selected site id ViewState["departmentsOldSiteId"] = siteId; } uniSelector.ButtonAddItems.Text = GetString("general.ok"); uniSelector.OnSelectionChanged += usSites_OnSelectionChanged; uniSelector.WhereCondition = (siteId <= 0) ? " DepartmentSiteID IS NULL " : " DepartmentSiteID =" + siteId; if (siteId > 0) { if (ECommerceSettings.AllowGlobalDepartments(siteId)) { uniSelector.WhereCondition += " OR (DepartmentSiteID IS NULL)"; } } }