public static void AddTags(StringCollection tags, int siteId, int contentId) { if (tags == null || tags.Count == 0) { return; } foreach (var tagName in tags) { var tagInfo = DataProvider.TagDao.GetTagInfo(siteId, AttackUtils.FilterXss(tagName)); if (tagInfo != null) { var contentIdList = TranslateUtils.StringCollectionToIntList(tagInfo.ContentIdCollection); if (!contentIdList.Contains(contentId)) { contentIdList.Add(contentId); tagInfo.ContentIdCollection = TranslateUtils.ObjectCollectionToString(contentIdList); tagInfo.UseNum = contentIdList.Count; DataProvider.TagDao.Update(tagInfo); } } else { tagInfo = new TagInfo(0, siteId, contentId.ToString(), tagName, contentId > 0 ? 1 : 0); DataProvider.TagDao.Insert(tagInfo); } } }
public void Update(AdministratorInfo info) { info.DisplayName = AttackUtils.FilterXss(info.DisplayName); info.Email = AttackUtils.FilterXss(info.Email); info.Mobile = AttackUtils.FilterXss(info.Mobile); IDataParameter[] parms = { GetParameter(ParmLastActivityDate, DataType.DateTime, info.LastActivityDate), GetParameter(ParmCountOfLogin, DataType.Integer, info.CountOfLogin), GetParameter(ParmCountOfFailedLogin, DataType.Integer, info.CountOfFailedLogin), GetParameter(ParmIsLockedOut, DataType.VarChar, 18,info.IsLockedOut.ToString()), GetParameter(ParmSiteIdCollection, DataType.VarChar, 50,info.SiteIdCollection), GetParameter(ParmSiteId, DataType.Integer, info.SiteId), GetParameter(ParmDepartmentId, DataType.Integer, info.DepartmentId), GetParameter(ParmAreaId, DataType.Integer, info.AreaId), GetParameter(ParmDisplayname, DataType.VarChar, 255,info.DisplayName), GetParameter(ParmEmail, DataType.VarChar, 255,info.Email), GetParameter(ParmMobile, DataType.VarChar, 20,info.Mobile), GetParameter(ParmUsername, DataType.VarChar, 255,info.UserName) }; ExecuteNonQuery(SqlUpdateUser, parms); DataProvider.DepartmentDao.UpdateCountOfAdmin(); DataProvider.AreaDao.UpdateCountOfAdmin(); AdminManager.UpdateCache(info); }
public bool Insert(AdministratorInfo adminInfo, out string errorMessage) { if (!InsertValidate(adminInfo.UserName, adminInfo.Password, adminInfo.Email, adminInfo.Mobile, out errorMessage)) { return(false); } try { adminInfo.LastActivityDate = DateUtils.SqlMinValue; adminInfo.CreationDate = DateTime.Now; adminInfo.PasswordFormat = EPasswordFormatUtils.GetValue(EPasswordFormat.Encrypted); adminInfo.Password = EncodePassword(adminInfo.Password, EPasswordFormatUtils.GetEnumType(adminInfo.PasswordFormat), out var passwordSalt); adminInfo.PasswordSalt = passwordSalt; adminInfo.DisplayName = AttackUtils.FilterXss(adminInfo.DisplayName); adminInfo.Email = AttackUtils.FilterXss(adminInfo.Email); adminInfo.Mobile = AttackUtils.FilterXss(adminInfo.Mobile); IDataParameter[] parameters = { GetParameter(ParmUsername, DataType.VarChar, 255, adminInfo.UserName), GetParameter(ParmPassword, DataType.VarChar, 255, adminInfo.Password), GetParameter(ParmPasswordFormat, DataType.VarChar, 50, adminInfo.PasswordFormat), GetParameter(ParmPasswordSalt, DataType.VarChar, 128, adminInfo.PasswordSalt), GetParameter(ParmCreationDate, DataType.DateTime, adminInfo.CreationDate), GetParameter(ParmLastActivityDate, DataType.DateTime, adminInfo.LastActivityDate), GetParameter(ParmCountOfLogin, DataType.Integer, adminInfo.CountOfLogin), GetParameter(ParmCountOfFailedLogin, DataType.Integer, adminInfo.CountOfFailedLogin), GetParameter(ParmCreatorUsername, DataType.VarChar, 255, adminInfo.CreatorUserName), GetParameter(ParmIsLockedOut, DataType.VarChar, 18, adminInfo.IsLockedOut.ToString()), GetParameter(ParmSiteIdCollection, DataType.VarChar, 50, adminInfo.SiteIdCollection), GetParameter(ParmSiteId, DataType.Integer, adminInfo.SiteId), GetParameter(ParmDepartmentId, DataType.Integer, adminInfo.DepartmentId), GetParameter(ParmAreaId, DataType.Integer, adminInfo.AreaId), GetParameter(ParmDisplayname, DataType.VarChar, 255, adminInfo.DisplayName), GetParameter(ParmMobile, DataType.VarChar, 20, adminInfo.Mobile), GetParameter(ParmEmail, DataType.VarChar, 255, adminInfo.Email), GetParameter(ParmAvatarUrl, DataType.VarChar, 200, adminInfo.AvatarUrl) }; ExecuteNonQuery(SqlInsertUser, parameters); DataProvider.DepartmentDao.UpdateCountOfAdmin(); DataProvider.AreaDao.UpdateCountOfAdmin(); var roles = new[] { EPredefinedRoleUtils.GetValue(EPredefinedRole.Administrator) }; DataProvider.AdministratorsInRolesDao.AddUserToRoles(adminInfo.UserName, roles); return(true); } catch (Exception ex) { errorMessage = ex.Message; return(false); } }
public override void Submit_OnClick(object sender, EventArgs e) { var isChanged = false; var contentGroupInfo = new ContentGroupInfo { GroupName = AttackUtils.FilterXss(TbContentGroupName.Text), SiteId = SiteId, Description = TbDescription.Text }; if (AuthRequest.IsQueryExists("GroupName")) { try { DataProvider.ContentGroupDao.Update(contentGroupInfo); AuthRequest.AddSiteLog(SiteId, "修改内容组", $"内容组:{contentGroupInfo.GroupName}"); isChanged = true; } catch (Exception ex) { FailMessage(ex, "内容组修改失败!"); } } else { var contentGroupNameList = DataProvider.ContentGroupDao.GetGroupNameList(SiteId); if (contentGroupNameList.IndexOf(TbContentGroupName.Text) != -1) { FailMessage("内容组添加失败,内容组名称已存在!"); } else { try { DataProvider.ContentGroupDao.Insert(contentGroupInfo); AuthRequest.AddSiteLog(SiteId, "添加内容组", $"内容组:{contentGroupInfo.GroupName}"); isChanged = true; } catch (Exception ex) { FailMessage(ex, "内容组添加失败!"); } } } if (isChanged) { LayerUtils.Close(Page); } }
public static Dictionary <string, object> SaveAttributes(SiteInfo siteInfo, List <TableStyleInfo> styleInfoList, NameValueCollection formCollection, List <string> dontAddAttributes) { var dict = new Dictionary <string, object>(); if (dontAddAttributes == null) { dontAddAttributes = new List <string>(); } foreach (var styleInfo in styleInfoList) { if (StringUtils.ContainsIgnoreCase(dontAddAttributes, styleInfo.AttributeName)) { continue; } //var theValue = GetValueByForm(styleInfo, siteInfo, formCollection); var theValue = formCollection[styleInfo.AttributeName] ?? string.Empty; var inputType = styleInfo.InputType; if (inputType == InputType.TextEditor) { theValue = ContentUtility.TextEditorContentEncode(siteInfo, theValue); theValue = UEditorUtils.TranslateToStlElement(theValue); } if (inputType != InputType.TextEditor && inputType != InputType.Image && inputType != InputType.File && inputType != InputType.Video && styleInfo.AttributeName != ContentAttribute.LinkUrl) { theValue = AttackUtils.FilterXss(theValue); } dict[styleInfo.AttributeName] = theValue; if (styleInfo.Additional.IsFormatString) { var formatString = TranslateUtils.ToBool(formCollection[styleInfo.AttributeName + "_formatStrong"]); var formatEm = TranslateUtils.ToBool(formCollection[styleInfo.AttributeName + "_formatEM"]); var formatU = TranslateUtils.ToBool(formCollection[styleInfo.AttributeName + "_formatU"]); var formatColor = formCollection[styleInfo.AttributeName + "_formatColor"]; var theFormatString = ContentUtility.GetTitleFormatString(formatString, formatEm, formatU, formatColor); dict[ContentAttribute.GetFormatStringAttributeName(styleInfo.AttributeName)] = theFormatString; } if (inputType == InputType.Image || inputType == InputType.File || inputType == InputType.Video) { var attributeName = ContentAttribute.GetExtendAttributeName(styleInfo.AttributeName); dict[attributeName] = formCollection[attributeName]; } } return(dict); }
public void Update(UserInfo userInfo) { if (userInfo == null) { return; } userInfo.DisplayName = AttackUtils.FilterXss(userInfo.DisplayName); userInfo.Email = AttackUtils.FilterXss(userInfo.Email); userInfo.Mobile = AttackUtils.FilterXss(userInfo.Mobile); userInfo.AvatarUrl = AttackUtils.FilterXss(userInfo.AvatarUrl); userInfo.Gender = AttackUtils.FilterXss(userInfo.Gender); userInfo.Birthday = AttackUtils.FilterXss(userInfo.Birthday); userInfo.WeiXin = AttackUtils.FilterXss(userInfo.WeiXin); userInfo.Qq = AttackUtils.FilterXss(userInfo.Qq); userInfo.WeiBo = AttackUtils.FilterXss(userInfo.WeiBo); userInfo.Bio = AttackUtils.FilterXss(userInfo.Bio); var sqlString = $"UPDATE {TableName} SET UserName = @UserName, CreateDate = @CreateDate, LastResetPasswordDate = @LastResetPasswordDate, LastActivityDate = @LastActivityDate, CountOfLogin = @CountOfLogin, CountOfFailedLogin = @CountOfFailedLogin, GroupId = @GroupId, IsChecked = @IsChecked, IsLockedOut = @IsLockedOut, DisplayName = @DisplayName, Email = @Email, Mobile = @Mobile, AvatarUrl = @AvatarUrl, Gender = @Gender, Birthday = @Birthday, WeiXin = @WeiXin, QQ = @QQ, WeiBo = @WeiBo, Bio = @Bio, SettingsXml = @SettingsXml WHERE Id = @Id"; var updateParms = new IDataParameter[] { GetParameter(ParmUserName, DataType.VarChar, 255, userInfo.UserName), GetParameter(ParmCreateDate, DataType.DateTime, userInfo.CreateDate), GetParameter(ParmLastResetPasswordDate, DataType.DateTime, userInfo.LastResetPasswordDate), GetParameter(ParmLastActivityDate, DataType.DateTime, userInfo.LastActivityDate), GetParameter(ParmCountOfLogin, DataType.Integer, userInfo.CountOfLogin), GetParameter(ParmCountOfFailedLogin, DataType.Integer, userInfo.CountOfFailedLogin), GetParameter(ParmGroupId, DataType.Integer, userInfo.GroupId), GetParameter(ParmIsChecked, DataType.VarChar, 18, userInfo.IsChecked.ToString()), GetParameter(ParmIsLockedOut, DataType.VarChar, 18, userInfo.IsLockedOut.ToString()), GetParameter(ParmDisplayname, DataType.VarChar, 255, userInfo.DisplayName), GetParameter(ParmEmail, DataType.VarChar, 255, userInfo.Email), GetParameter(ParmMobile, DataType.VarChar, 20, userInfo.Mobile), GetParameter(ParmAvatarUrl, DataType.VarChar, 200, userInfo.AvatarUrl), GetParameter(ParmGender, DataType.VarChar, 255, userInfo.Gender), GetParameter(ParmBirthday, DataType.VarChar, 50, userInfo.Birthday), GetParameter(ParmWeixin, DataType.VarChar, 255, userInfo.WeiXin), GetParameter(ParmQq, DataType.VarChar, 255, userInfo.Qq), GetParameter(ParmWeibo, DataType.VarChar, 255, userInfo.WeiBo), GetParameter(ParmBio, DataType.Text, userInfo.Bio), GetParameter(ParmSettingsXml, DataType.Text, userInfo.ToString(UserAttribute.AllAttributes.Value)), GetParameter(ParmId, DataType.Integer, userInfo.Id) }; ExecuteNonQuery(sqlString, updateParms); UserManager.UpdateCache(userInfo); }
private int InsertWithoutValidation(UserInfo userInfo, string password, EPasswordFormat passwordFormat, string passwordSalt) { var sqlString = $"INSERT INTO {TableName} (UserName, Password, PasswordFormat, PasswordSalt, CreateDate, LastResetPasswordDate, LastActivityDate, CountOfLogin, CountOfFailedLogin, GroupId, IsChecked, IsLockedOut, DisplayName, Email, Mobile, AvatarUrl, Gender, Birthday, WeiXin, QQ, WeiBo, Bio, SettingsXml) VALUES (@UserName, @Password, @PasswordFormat, @PasswordSalt, @CreateDate, @LastResetPasswordDate, @LastActivityDate, @CountOfLogin, @CountOfFailedLogin, @GroupId, @IsChecked, @IsLockedOut, @DisplayName, @Email, @Mobile, @AvatarUrl, @Gender, @Birthday, @WeiXin, @QQ, @WeiBo, @Bio, @SettingsXml)"; userInfo.CreateDate = DateTime.Now; userInfo.LastActivityDate = DateTime.Now; userInfo.LastResetPasswordDate = DateTime.Now; userInfo.DisplayName = AttackUtils.FilterXss(userInfo.DisplayName); userInfo.Email = AttackUtils.FilterXss(userInfo.Email); userInfo.Mobile = AttackUtils.FilterXss(userInfo.Mobile); userInfo.AvatarUrl = AttackUtils.FilterXss(userInfo.AvatarUrl); userInfo.Gender = AttackUtils.FilterXss(userInfo.Gender); userInfo.Birthday = AttackUtils.FilterXss(userInfo.Birthday); userInfo.WeiXin = AttackUtils.FilterXss(userInfo.WeiXin); userInfo.Qq = AttackUtils.FilterXss(userInfo.Qq); userInfo.WeiBo = AttackUtils.FilterXss(userInfo.WeiBo); userInfo.Bio = AttackUtils.FilterXss(userInfo.Bio); var settingsXml = userInfo.ToString(UserAttribute.AllAttributes.Value); var parameters = new IDataParameter[] { GetParameter(ParmUserName, DataType.VarChar, 255, userInfo.UserName), GetParameter(ParmPassword, DataType.VarChar, 255, password), GetParameter(ParmPasswordFormat, DataType.VarChar, 50, EPasswordFormatUtils.GetValue(passwordFormat)), GetParameter(ParmPasswordSalt, DataType.VarChar, 128, passwordSalt), GetParameter(ParmCreateDate, DataType.DateTime, userInfo.CreateDate), GetParameter(ParmLastResetPasswordDate, DataType.DateTime, userInfo.LastResetPasswordDate), GetParameter(ParmLastActivityDate, DataType.DateTime, userInfo.LastActivityDate), GetParameter(ParmCountOfLogin, DataType.Integer, userInfo.CountOfLogin), GetParameter(ParmCountOfFailedLogin, DataType.Integer, userInfo.CountOfFailedLogin), GetParameter(ParmGroupId, DataType.Integer, userInfo.GroupId), GetParameter(ParmIsChecked, DataType.VarChar, 18, userInfo.IsChecked.ToString()), GetParameter(ParmIsLockedOut, DataType.VarChar, 18, userInfo.IsLockedOut.ToString()), GetParameter(ParmDisplayname, DataType.VarChar, 255, userInfo.DisplayName), GetParameter(ParmEmail, DataType.VarChar, 255, userInfo.Email), GetParameter(ParmMobile, DataType.VarChar, 20, userInfo.Mobile), GetParameter(ParmAvatarUrl, DataType.VarChar, 200, userInfo.AvatarUrl), GetParameter(ParmGender, DataType.VarChar, 255, userInfo.Gender), GetParameter(ParmBirthday, DataType.VarChar, 50, userInfo.Birthday), GetParameter(ParmWeixin, DataType.VarChar, 255, userInfo.WeiXin), GetParameter(ParmQq, DataType.VarChar, 255, userInfo.Qq), GetParameter(ParmWeibo, DataType.VarChar, 255, userInfo.WeiBo), GetParameter(ParmBio, DataType.Text, userInfo.Bio), GetParameter(ParmSettingsXml, DataType.Text, settingsXml) }; return(ExecuteNonQueryAndReturnId(TableName, UserAttribute.Id, sqlString, parameters)); }
private bool UpdateTableStyleInfo(TableStyleInfo styleInfo, TableStyleInfo body, bool isRapid, List <string> rapidValues, out string errorMessage) { errorMessage = string.Empty; styleInfo.AttributeName = body.AttributeName; styleInfo.DisplayName = AttackUtils.FilterXss(body.DisplayName); styleInfo.HelpText = body.HelpText; styleInfo.Taxis = body.Taxis; styleInfo.InputType = body.InputType; styleInfo.DefaultValue = body.DefaultValue; styleInfo.IsHorizontal = body.IsHorizontal; styleInfo.ExtendValues = body.Additional.ToString(); styleInfo.StyleItems = new List <TableStyleItemInfo>(); if (body.InputType == InputType.CheckBox || body.InputType == InputType.Radio || body.InputType == InputType.SelectMultiple || body.InputType == InputType.SelectOne) { if (isRapid) { foreach (var rapidValue in rapidValues) { var itemInfo = new TableStyleItemInfo(0, styleInfo.Id, rapidValue, rapidValue, false); styleInfo.StyleItems.Add(itemInfo); } } else { var isHasSelected = false; foreach (var styleItem in body.StyleItems) { if (body.InputType != InputType.SelectMultiple && body.InputType != InputType.CheckBox && isHasSelected && styleItem.IsSelected) { errorMessage = "操作失败,只能有一个初始化时选定项!"; return(false); } if (styleItem.IsSelected) { isHasSelected = true; } var itemInfo = new TableStyleItemInfo(0, styleInfo.Id, styleItem.ItemTitle, styleItem.ItemValue, styleItem.IsSelected); styleInfo.StyleItems.Add(itemInfo); } } } DataProvider.TableStyleDao.Update(styleInfo); return(true); }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.SettingsPermissions.SiteAdd)) { return(Unauthorized()); } var createType = request.GetPostString("createType"); var createTemplateId = request.GetPostString("createTemplateId"); var siteName = request.GetPostString("siteName"); var isRoot = request.GetPostBool("isRoot"); var parentId = request.GetPostInt("parentId"); var siteDir = request.GetPostString("siteDir"); var domainName = request.GetPostString("domainName"); var tableRule = ETableRuleUtils.GetEnumType(request.GetPostString("tableRule")); var tableChoose = request.GetPostString("tableChoose"); var tableHandWrite = request.GetPostString("tableHandWrite"); var isImportContents = request.GetPostBool("isImportContents"); var isImportTableStyles = request.GetPostBool("isImportTableStyles"); if (!isRoot) { if (DirectoryUtils.IsSystemDirectory(siteDir)) { return(BadRequest("文件夹名称不能为系统文件夹名称,请更改文件夹名称!")); } if (!DirectoryUtils.IsDirectoryNameCompliant(siteDir)) { return(BadRequest("文件夹名称不符合系统要求,请更改文件夹名称!")); } var list = DataProvider.SiteDao.GetLowerSiteDirList(parentId); if (list.IndexOf(siteDir.ToLower()) != -1) { return(BadRequest("已存在相同的发布路径,请更改文件夹名称!")); } } var channelInfo = new ChannelInfo(); channelInfo.ChannelName = channelInfo.IndexName = "首页"; channelInfo.ParentId = 0; channelInfo.ContentModelPluginId = string.Empty; var tableName = string.Empty; if (tableRule == ETableRule.Choose) { tableName = tableChoose; } else if (tableRule == ETableRule.HandWrite) { tableName = tableHandWrite; if (!DataProvider.DatabaseDao.IsTableExists(tableName)) { DataProvider.ContentDao.CreateContentTable(tableName, DataProvider.ContentDao.TableColumnsDefault); } else { DataProvider.DatabaseDao.AlterSystemTable(tableName, DataProvider.ContentDao.TableColumnsDefault); } } var siteInfo = new SiteInfo { SiteName = AttackUtils.FilterXss(siteName), SiteDir = siteDir, DomainName = domainName, TableName = tableName, ParentId = parentId, IsRoot = isRoot }; siteInfo.Additional.IsCheckContentLevel = false; siteInfo.Additional.Charset = ECharsetUtils.GetValue(ECharset.utf_8); var siteId = DataProvider.ChannelDao.InsertSiteInfo(channelInfo, siteInfo, request.AdminName); if (string.IsNullOrEmpty(tableName)) { tableName = ContentDao.GetContentTableName(siteId); DataProvider.ContentDao.CreateContentTable(tableName, DataProvider.ContentDao.TableColumnsDefault); DataProvider.SiteDao.UpdateTableName(siteId, tableName); } if (request.AdminPermissionsImpl.IsSystemAdministrator && !request.AdminPermissionsImpl.IsConsoleAdministrator) { var siteIdList = request.AdminPermissionsImpl.GetSiteIdList() ?? new List <int>(); siteIdList.Add(siteId); var adminInfo = AdminManager.GetAdminInfoByUserId(request.AdminId); DataProvider.AdministratorDao.UpdateSiteIdCollection(adminInfo, TranslateUtils.ObjectCollectionToString(siteIdList)); } var siteTemplateDir = string.Empty; var onlineTemplateName = string.Empty; if (StringUtils.EqualsIgnoreCase(createType, "local")) { siteTemplateDir = createTemplateId; } else if (StringUtils.EqualsIgnoreCase(createType, "cloud")) { onlineTemplateName = createTemplateId; } var redirectUrl = PageProgressBar.GetCreateSiteUrl(siteId, isImportContents, isImportTableStyles, siteTemplateDir, onlineTemplateName, StringUtils.Guid()); SystemManager.UpdateSites(); return(Ok(new { Value = redirectUrl })); } catch (Exception ex) { return(InternalServerError(ex)); } }
private int Validate_SiteInfo(out string errorMessage) { try { var isHq = TranslateUtils.ToBool(RblIsRoot.SelectedValue); // 是否主站 var parentSiteId = 0; var siteDir = string.Empty; if (isHq == false) { if (DirectoryUtils.IsSystemDirectory(TbSiteDir.Text)) { errorMessage = "文件夹名称不能为系统文件夹名称!"; return(0); } parentSiteId = TranslateUtils.ToInt(DdlParentId.SelectedValue); siteDir = TbSiteDir.Text; var list = DataProvider.SiteDao.GetLowerSiteDirList(parentSiteId); if (list.IndexOf(siteDir.ToLower()) != -1) { errorMessage = "已存在相同的发布路径!"; return(0); } if (!DirectoryUtils.IsDirectoryNameCompliant(siteDir)) { errorMessage = "文件夹名称不符合系统要求!"; return(0); } } var nodeInfo = new ChannelInfo(); nodeInfo.ChannelName = nodeInfo.IndexName = "首页"; nodeInfo.ParentId = 0; nodeInfo.ContentModelPluginId = string.Empty; var psInfo = new SiteInfo { SiteName = AttackUtils.FilterXss(TbSiteName.Text), SiteDir = siteDir, TableName = DdlTableName.SelectedValue, ParentId = parentSiteId, IsRoot = isHq }; psInfo.Additional.IsCheckContentLevel = TranslateUtils.ToBool(RblIsCheckContentUseLevel.SelectedValue); if (psInfo.Additional.IsCheckContentLevel) { psInfo.Additional.CheckContentLevel = TranslateUtils.ToInt(DdlCheckContentLevel.SelectedValue); } psInfo.Additional.Charset = DdlCharset.SelectedValue; var theSiteId = DataProvider.ChannelDao.InsertSiteInfo(nodeInfo, psInfo, AuthRequest.AdminName); if (AuthRequest.AdminPermissions.IsSystemAdministrator && !AuthRequest.AdminPermissions.IsConsoleAdministrator) { var siteIdList = AuthRequest.AdminPermissions.SiteIdList ?? new List <int>(); siteIdList.Add(theSiteId); DataProvider.AdministratorDao.UpdateSiteIdCollection(AuthRequest.AdminName, TranslateUtils.ObjectCollectionToString(siteIdList)); } AuthRequest.AddAdminLog("创建新站点", $"站点名称:{AttackUtils.FilterXss(TbSiteName.Text)}"); errorMessage = string.Empty; return(theSiteId); } catch (Exception e) { errorMessage = e.Message; return(0); } }
private bool UpdateTableStyleInfo(InputType inputType) { var isChanged = false; _styleInfo.AttributeName = TbAttributeName.Text; _styleInfo.DisplayName = AttackUtils.FilterXss(TbDisplayName.Text); _styleInfo.HelpText = TbHelpText.Text; _styleInfo.Taxis = TranslateUtils.ToInt(TbTaxis.Text); _styleInfo.InputType = inputType; _styleInfo.DefaultValue = TbDefaultValue.Text; _styleInfo.IsHorizontal = TranslateUtils.ToBool(DdlIsHorizontal.SelectedValue); _styleInfo.Additional.Columns = TranslateUtils.ToInt(TbColumns.Text); _styleInfo.Additional.Height = TranslateUtils.ToInt(TbHeight.Text); _styleInfo.Additional.Width = TbWidth.Text; _styleInfo.Additional.IsFormatString = TranslateUtils.ToBool(DdlIsFormatString.SelectedValue); _styleInfo.Additional.RelatedFieldId = TranslateUtils.ToInt(DdlRelatedFieldId.SelectedValue); _styleInfo.Additional.RelatedFieldStyle = DdlRelatedFieldStyle.SelectedValue; _styleInfo.Additional.CustomizeLeft = TbCustomizeLeft.Text; _styleInfo.Additional.CustomizeRight = TbCustomizeRight.Text; List <TableStyleItemInfo> styleItems = null; if (inputType == InputType.CheckBox || inputType == InputType.Radio || inputType == InputType.SelectMultiple || inputType == InputType.SelectOne) { styleItems = new List <TableStyleItemInfo>(); var isRapid = TranslateUtils.ToBool(DdlIsRapid.SelectedValue); if (isRapid) { var rapidValues = TranslateUtils.StringCollectionToStringList(TbRapidValues.Text); foreach (var rapidValue in rapidValues) { var itemInfo = new TableStyleItemInfo(0, _styleInfo.Id, rapidValue, rapidValue, false); styleItems.Add(itemInfo); } } else { var isHasSelected = false; foreach (RepeaterItem item in RptItems.Items) { var tbTitle = (TextBox)item.FindControl("tbTitle"); var tbValue = (TextBox)item.FindControl("tbValue"); var cbIsSelected = (CheckBox)item.FindControl("cbIsSelected"); if (inputType != InputType.SelectMultiple && inputType != InputType.CheckBox && isHasSelected && cbIsSelected.Checked) { FailMessage("操作失败,只能有一个初始化时选定项!"); return(false); } if (cbIsSelected.Checked) { isHasSelected = true; } var itemInfo = new TableStyleItemInfo(0, _styleInfo.Id, tbTitle.Text, tbValue.Text, cbIsSelected.Checked); styleItems.Add(itemInfo); } } } try { TableStyleManager.Update(_styleInfo); TableStyleManager.DeleteAndInsertStyleItems(_styleInfo.Id, styleItems); if (SiteId > 0) { AuthRequest.AddSiteLog(SiteId, "修改表单显示样式", $"字段名:{_styleInfo.AttributeName}"); } else { AuthRequest.AddAdminLog("修改表单显示样式", $"字段名:{_styleInfo.AttributeName}"); } isChanged = true; } catch (Exception ex) { FailMessage(ex, "显示样式修改失败:" + ex.Message); } return(isChanged); }
private bool InsertTableStyleInfo(string tableName, List <int> relatedIdentities, TableStyleInfo body, bool isRapid, List <string> rapidValues, out string errorMessage) { errorMessage = string.Empty; var relatedIdentity = relatedIdentities[0]; if (string.IsNullOrEmpty(body.AttributeName)) { errorMessage = "操作失败,字段名不能为空!"; return(false); } if (TableStyleManager.IsExists(relatedIdentity, tableName, body.AttributeName)) { errorMessage = $@"显示样式添加失败:字段名""{body.AttributeName}""已存在"; return(false); } var styleInfo = TableColumnManager.IsAttributeNameExists(tableName, body.AttributeName) ? TableStyleManager.GetTableStyleInfo(tableName, body.AttributeName, relatedIdentities) : new TableStyleInfo(); styleInfo.RelatedIdentity = relatedIdentity; styleInfo.TableName = tableName; styleInfo.AttributeName = body.AttributeName; styleInfo.DisplayName = AttackUtils.FilterXss(body.DisplayName); styleInfo.HelpText = body.HelpText; styleInfo.Taxis = body.Taxis; styleInfo.InputType = body.InputType; styleInfo.DefaultValue = body.DefaultValue; styleInfo.IsHorizontal = body.IsHorizontal; styleInfo.ExtendValues = body.Additional.ToString(); styleInfo.StyleItems = new List <TableStyleItemInfo>(); if (body.InputType == InputType.CheckBox || body.InputType == InputType.Radio || body.InputType == InputType.SelectMultiple || body.InputType == InputType.SelectOne) { if (isRapid) { foreach (var rapidValue in rapidValues) { var itemInfo = new TableStyleItemInfo(0, 0, rapidValue, rapidValue, false); styleInfo.StyleItems.Add(itemInfo); } } else { var isHasSelected = false; foreach (var styleItem in body.StyleItems) { if (body.InputType != InputType.SelectMultiple && body.InputType != InputType.CheckBox && isHasSelected && styleItem.IsSelected) { errorMessage = "操作失败,只能有一个初始化时选定项!"; return(false); } if (styleItem.IsSelected) { isHasSelected = true; } var itemInfo = new TableStyleItemInfo(0, 0, styleItem.ItemTitle, styleItem.ItemValue, styleItem.IsSelected); styleInfo.StyleItems.Add(itemInfo); } } } DataProvider.TableStyleDao.Insert(styleInfo); return(true); }
private bool InsertTableStyleInfo(InputType inputType) { var isChanged = false; var relatedIdentity = _relatedIdentities[0]; if (string.IsNullOrEmpty(TbAttributeName.Text)) { FailMessage("操作失败,字段名不能为空!"); return(false); } if (TableStyleManager.IsExists(relatedIdentity, _tableName, TbAttributeName.Text)) { FailMessage($@"显示样式添加失败:字段名""{TbAttributeName.Text}""已存在"); return(false); } _styleInfo = DataProvider.TableMetadataDao.IsExists(_tableName, TbAttributeName.Text) ? TableStyleManager.GetTableStyleInfo(_tableName, TbAttributeName.Text, _relatedIdentities) : new TableStyleInfo(); _styleInfo.RelatedIdentity = relatedIdentity; _styleInfo.TableName = _tableName; _styleInfo.AttributeName = TbAttributeName.Text; _styleInfo.DisplayName = AttackUtils.FilterXss(TbDisplayName.Text); _styleInfo.HelpText = TbHelpText.Text; _styleInfo.Taxis = TranslateUtils.ToInt(TbTaxis.Text); _styleInfo.InputType = inputType; _styleInfo.DefaultValue = TbDefaultValue.Text; _styleInfo.IsHorizontal = TranslateUtils.ToBool(DdlIsHorizontal.SelectedValue); _styleInfo.Additional.Columns = TranslateUtils.ToInt(TbColumns.Text); _styleInfo.Additional.Height = TranslateUtils.ToInt(TbHeight.Text); _styleInfo.Additional.Width = TbWidth.Text; _styleInfo.Additional.IsFormatString = TranslateUtils.ToBool(DdlIsFormatString.SelectedValue); _styleInfo.Additional.RelatedFieldId = TranslateUtils.ToInt(DdlRelatedFieldId.SelectedValue); _styleInfo.Additional.RelatedFieldStyle = DdlRelatedFieldStyle.SelectedValue; _styleInfo.Additional.CustomizeLeft = TbCustomizeLeft.Text; _styleInfo.Additional.CustomizeRight = TbCustomizeRight.Text; if (inputType == InputType.CheckBox || inputType == InputType.Radio || inputType == InputType.SelectMultiple || inputType == InputType.SelectOne) { _styleInfo.StyleItems = new List <TableStyleItemInfo>(); var isRapid = TranslateUtils.ToBool(DdlIsRapid.SelectedValue); if (isRapid) { var rapidValues = TranslateUtils.StringCollectionToStringList(TbRapidValues.Text); foreach (var rapidValue in rapidValues) { var itemInfo = new TableStyleItemInfo(0, _styleInfo.Id, rapidValue, rapidValue, false); _styleInfo.StyleItems.Add(itemInfo); } } else { var isHasSelected = false; foreach (RepeaterItem item in RptItems.Items) { var tbTitle = (TextBox)item.FindControl("tbTitle"); var tbValue = (TextBox)item.FindControl("tbValue"); var cbIsSelected = (CheckBox)item.FindControl("cbIsSelected"); if (inputType != InputType.SelectMultiple && inputType != InputType.CheckBox && isHasSelected && cbIsSelected.Checked) { FailMessage("操作失败,只能有一个初始化时选定项!"); return(false); } if (cbIsSelected.Checked) { isHasSelected = true; } var itemInfo = new TableStyleItemInfo(0, 0, tbTitle.Text, tbValue.Text, cbIsSelected.Checked); _styleInfo.StyleItems.Add(itemInfo); } } } try { TableStyleManager.Insert(_styleInfo); if (SiteId > 0) { AuthRequest.AddSiteLog(SiteId, "添加表单显示样式", $"字段名:{_styleInfo.AttributeName}"); } else { AuthRequest.AddAdminLog("添加表单显示样式", $"字段名:{_styleInfo.AttributeName}"); } isChanged = true; } catch (Exception ex) { FailMessage(ex, "显示样式添加失败:" + ex.Message); } return(isChanged); }
public string FilterXss(string html) { return(AttackUtils.FilterXss(html)); }
private int Validate_SiteInfo(out string errorMessage) { try { var isRoot = TranslateUtils.ToBool(RblIsRoot.SelectedValue); // 是否主站 var parentSiteId = 0; var siteDir = string.Empty; var domainName = string.Empty; if (DirectoryUtils.IsSystemDirectory(TbSiteDir.Text) || DirectoryUtils.IsWebSiteDirectory(TbSiteDir.Text)) { errorMessage = "文件夹名称不能为系统文件夹名称!"; return(0); } parentSiteId = TranslateUtils.ToInt(DdlParentId.SelectedValue); siteDir = TbSiteDir.Text; var list = DataProvider.SiteDao.GetLowerSiteDirList(parentSiteId); if (list.IndexOf(siteDir.ToLower()) != -1) { errorMessage = "已存在相同的发布路径!"; return(0); } if (!DirectoryUtils.IsDirectoryNameCompliant(siteDir)) { errorMessage = "文件夹名称不符合系统要求!"; return(0); } if (isRoot == false)//如果不是主站 { if (String.IsNullOrWhiteSpace(TbDomainName.Text)) { errorMessage = "网站域名不能为空!"; return(0); } else { String[] domainNames = TbDomainName.Text.Split(';'); foreach (String domain in domainNames) { if (SystemManager.SiteList.ContainsKey(domain)) { errorMessage = "域名“" + domain + "”已被其他网站占用,请选择其他域名!"; return(0); } else if (domainName.Length > 0) { domainName += ";" + domain; } else { domainName += ";" + domain; } } } if (domainName.Split(';').Length > 3) { errorMessage = "一个网站最多只能绑定3个域名,而您绑定了" + domainName.Split(';').Length + "个,请删除多余的域名!"; return(0); } } var nodeInfo = new ChannelInfo(); nodeInfo.ChannelName = nodeInfo.IndexName = "首页"; nodeInfo.ParentId = 0; nodeInfo.ContentModelPluginId = string.Empty; var tableName = string.Empty; var tableRule = ETableRuleUtils.GetEnumType(RblTableRule.SelectedValue); if (tableRule == ETableRule.Choose) { tableName = DdlTableChoose.SelectedValue; } else if (tableRule == ETableRule.HandWrite) { tableName = TbTableHandWrite.Text; if (!DataProvider.DatabaseDao.IsTableExists(tableName)) { DataProvider.ContentDao.CreateContentTable(tableName, DataProvider.ContentDao.TableColumnsDefault); } else { DataProvider.DatabaseDao.AlterSystemTable(tableName, DataProvider.ContentDao.TableColumnsDefault); } } var siteInfo = new SiteInfo { SiteName = AttackUtils.FilterXss(TbSiteName.Text), DomainName = domainName, SiteDir = siteDir, TableName = tableName, ParentId = parentSiteId, IsRoot = isRoot }; siteInfo.Additional.IsCheckContentLevel = TranslateUtils.ToBool(RblIsCheckContentUseLevel.SelectedValue); if (siteInfo.Additional.IsCheckContentLevel) { siteInfo.Additional.CheckContentLevel = TranslateUtils.ToInt(DdlCheckContentLevel.SelectedValue); } siteInfo.Additional.Charset = DdlCharset.SelectedValue; var siteId = DataProvider.ChannelDao.InsertSiteInfo(nodeInfo, siteInfo, AuthRequest.AdminName); if (string.IsNullOrEmpty(tableName)) { tableName = ContentDao.GetContentTableName(siteId); DataProvider.ContentDao.CreateContentTable(tableName, DataProvider.ContentDao.TableColumnsDefault); DataProvider.SiteDao.UpdateTableName(siteId, tableName); } if (AuthRequest.AdminPermissionsImpl.IsSystemAdministrator && !AuthRequest.AdminPermissionsImpl.IsConsoleAdministrator) { var siteIdList = AuthRequest.AdminPermissionsImpl.GetSiteIdList() ?? new List <int>(); siteIdList.Add(siteId); var adminInfo = AdminManager.GetAdminInfoByUserId(AuthRequest.AdminId); DataProvider.AdministratorDao.UpdateSiteIdCollection(adminInfo, TranslateUtils.ObjectCollectionToString(siteIdList)); } AuthRequest.AddAdminLog("创建新站点", $"站点名称:{AttackUtils.FilterXss(TbSiteName.Text)}"); errorMessage = string.Empty; return(siteId); } catch (Exception e) { errorMessage = e.Message; return(0); } }
public IHttpActionResult Submit() { try { var request = new RequestImpl(); var siteId = request.GetPostInt("siteId"); var channelId = request.GetPostInt("channelId"); var contentIdList = TranslateUtils.StringCollectionToIntList(request.GetPostString("contentIds")); var pageType = request.GetPostString("pageType"); var groupNames = TranslateUtils.StringCollectionToStringList(request.GetPostString("groupNames")); var groupName = request.GetPostString("groupName"); var description = request.GetPostString("description"); if (!request.IsUserLoggin || !request.UserPermissionsImpl.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentEdit)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } if (pageType == "setGroup") { foreach (var contentId in contentIdList) { var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, contentId); if (contentInfo == null) { continue; } var list = TranslateUtils.StringCollectionToStringList(contentInfo.GroupNameCollection); foreach (var name in groupNames) { if (!list.Contains(name)) { list.Add(name); } } contentInfo.GroupNameCollection = TranslateUtils.ObjectCollectionToString(list); DataProvider.ContentDao.Update(siteInfo, channelInfo, contentInfo); } request.AddSiteLog(siteId, "批量设置内容组", $"内容组:{TranslateUtils.ObjectCollectionToString(groupNames)}"); } else if (pageType == "cancelGroup") { foreach (var contentId in contentIdList) { var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, contentId); if (contentInfo == null) { continue; } var list = TranslateUtils.StringCollectionToStringList(contentInfo.GroupNameCollection); foreach (var name in groupNames) { if (list.Contains(name)) { list.Remove(name); } } contentInfo.GroupNameCollection = TranslateUtils.ObjectCollectionToString(list); DataProvider.ContentDao.Update(siteInfo, channelInfo, contentInfo); } request.AddSiteLog(siteId, "批量取消内容组", $"内容组:{TranslateUtils.ObjectCollectionToString(groupNames)}"); } else if (pageType == "addGroup") { var groupInfo = new ContentGroupInfo { GroupName = AttackUtils.FilterXss(groupName), SiteId = siteId, Description = AttackUtils.FilterXss(description) }; if (ContentGroupManager.IsExists(siteId, groupInfo.GroupName)) { DataProvider.ContentGroupDao.Update(groupInfo); request.AddSiteLog(siteId, "修改内容组", $"内容组:{groupInfo.GroupName}"); } else { DataProvider.ContentGroupDao.Insert(groupInfo); request.AddSiteLog(siteId, "添加内容组", $"内容组:{groupInfo.GroupName}"); } foreach (var contentId in contentIdList) { var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, contentId); if (contentInfo == null) { continue; } var list = TranslateUtils.StringCollectionToStringList(contentInfo.GroupNameCollection); if (!list.Contains(groupInfo.GroupName)) { list.Add(groupInfo.GroupName); } contentInfo.GroupNameCollection = TranslateUtils.ObjectCollectionToString(list); DataProvider.ContentDao.Update(siteInfo, channelInfo, contentInfo); } request.AddSiteLog(siteId, "批量设置内容组", $"内容组:{groupInfo.GroupName}"); } return(Ok(new { Value = contentIdList })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public async Task <ActionResult <BoolResult> > Submit([FromBody] SubmitRequest request) { if (!await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, Types.ContentPermissions.Edit)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(request.ChannelId); if (channel == null) { return(NotFound()); } if (request.PageType == "setGroup") { foreach (var contentId in request.ContentIds) { var contentInfo = await _contentRepository.GetAsync(site, channel, contentId); if (contentInfo == null) { continue; } var list = contentInfo.GroupNames; foreach (var name in request.GroupNames) { if (!list.Contains(name)) { list.Add(name); } } contentInfo.GroupNames = list; await _contentRepository.UpdateAsync(site, channel, contentInfo); } await _authManager.AddSiteLogAsync(request.SiteId, "批量设置内容组", $"内容组:{ListUtils.ToString(request.GroupNames)}"); } else if (request.PageType == "cancelGroup") { foreach (var contentId in request.ContentIds) { var contentInfo = await _contentRepository.GetAsync(site, channel, contentId); if (contentInfo == null) { continue; } var list = contentInfo.GroupNames; foreach (var name in request.GroupNames) { if (list.Contains(name)) { list.Remove(name); } } contentInfo.GroupNames = list; await _contentRepository.UpdateAsync(site, channel, contentInfo); } await _authManager.AddSiteLogAsync(request.SiteId, "批量取消内容组", $"内容组:{ListUtils.ToString(request.GroupNames)}"); } else if (request.PageType == "addGroup") { var groupInfo = new ContentGroup { GroupName = AttackUtils.FilterXss(request.GroupName), SiteId = request.SiteId, Description = AttackUtils.FilterXss(request.Description) }; if (await _contentGroupRepository.IsExistsAsync(request.SiteId, groupInfo.GroupName)) { await _contentGroupRepository.UpdateAsync(groupInfo); await _authManager.AddSiteLogAsync(request.SiteId, "修改内容组", $"内容组:{groupInfo.GroupName}"); } else { await _contentGroupRepository.InsertAsync(groupInfo); await _authManager.AddSiteLogAsync(request.SiteId, "添加内容组", $"内容组:{groupInfo.GroupName}"); } foreach (var contentId in request.ContentIds) { var contentInfo = await _contentRepository.GetAsync(site, channel, contentId); if (contentInfo == null) { continue; } var list = contentInfo.GroupNames; if (!list.Contains(groupInfo.GroupName)) { list.Add(groupInfo.GroupName); } contentInfo.GroupNames = list; await _contentRepository.UpdateAsync(site, channel, contentInfo); } await _authManager.AddSiteLogAsync(request.SiteId, "批量设置内容组", $"内容组:{groupInfo.GroupName}"); } return(new BoolResult { Value = true }); }