public IHttpActionResult SavePermissions(int adminId) { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.SettingsPermissions.Admin)) { return(Unauthorized()); } if (!request.AdminPermissions.IsSuperAdmin()) { return(Unauthorized()); } var adminLevel = request.GetPostString("adminLevel"); var checkedSites = request.GetPostObject <List <int> >("checkedSites"); var checkedRoles = request.GetPostObject <List <string> >("checkedRoles"); var adminInfo = AdminManager.GetAdminInfoByUserId(adminId); DataProvider.AdministratorsInRolesDao.RemoveUser(adminInfo.UserName); if (adminLevel == "SuperAdmin") { DataProvider.AdministratorsInRolesDao.AddUserToRole(adminInfo.UserName, EPredefinedRoleUtils.GetValue(EPredefinedRole.ConsoleAdministrator)); } else if (adminLevel == "SiteAdmin") { DataProvider.AdministratorsInRolesDao.AddUserToRole(adminInfo.UserName, EPredefinedRoleUtils.GetValue(EPredefinedRole.SystemAdministrator)); } else { DataProvider.AdministratorsInRolesDao.AddUserToRole(adminInfo.UserName, EPredefinedRoleUtils.GetValue(EPredefinedRole.Administrator)); DataProvider.AdministratorsInRolesDao.AddUserToRoles(adminInfo.UserName, checkedRoles.ToArray()); } DataProvider.AdministratorDao.UpdateSiteIdCollection(adminInfo, adminLevel == "SiteAdmin" ? TranslateUtils.ObjectCollectionToString(checkedSites) : string.Empty); PermissionsImpl.ClearAllCache(); request.AddAdminLog("设置管理员权限", $"管理员:{adminInfo.UserName}"); return(Ok(new { Value = true, Roles = AdminManager.GetRoles(adminInfo.UserName) })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Create() { try { var request = new AuthenticatedRequest(); var userInfo = new UserInfo(request.GetPostObject <Dictionary <string, object> >()); if (!ConfigManager.SystemConfigInfo.IsUserRegistrationGroup) { userInfo.GroupId = 0; } var password = request.GetPostString("password"); var userId = DataProvider.UserDao.Insert(userInfo, password, PageUtils.GetIpAddress(), out var errorMessage); if (userId == 0) { return(BadRequest(errorMessage)); } return(Ok(new { Value = UserManager.GetUserInfoByUserId(userId) })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.PluginsPermissions.Add)) { return(Unauthorized()); } var fileNames = request.GetPostObject <List <string> >("fileNames"); foreach (var fileName in fileNames) { var localFilePath = PathUtils.GetTemporaryFilesPath(fileName); //var importObject = new ImportObject(siteId, request.AdminName); //importObject.ImportContentsByZipFile(channelInfo, localFilePath, isOverride, isChecked, checkedLevel, request.AdminId, 0, SourceManager.Default); } request.AddAdminLog("安装离线插件", string.Empty); return(Ok(new { Value = true })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin) { return(Unauthorized()); } var tableName = request.GetPostString("tableName"); var attributeName = request.GetPostString("attributeName"); var relatedIdentities = TranslateUtils.StringCollectionToIntList(request.GetPostString("relatedIdentities")); var isRapid = request.GetPostBool("isRapid"); var rapidValues = TranslateUtils.StringCollectionToStringList(request.GetPostString("rapidValues")); var body = request.GetPostObject <TableStyleInfo>("styleInfo"); var styleInfoDatabase = TableStyleManager.GetTableStyleInfo(tableName, attributeName, relatedIdentities) ?? new TableStyleInfo(); bool isSuccess; string errorMessage; //数据库中没有此项及父项的表样式 or 数据库中没有此项的表样式,但是有父项的表样式 if (styleInfoDatabase.Id == 0 && styleInfoDatabase.RelatedIdentity == 0 || styleInfoDatabase.RelatedIdentity != relatedIdentities[0]) { isSuccess = InsertTableStyleInfo(tableName, relatedIdentities, body, isRapid, rapidValues, out errorMessage); request.AddAdminLog("添加表单显示样式", $"字段名:{body.AttributeName}"); } //数据库中有此项的表样式 else { isSuccess = UpdateTableStyleInfo(styleInfoDatabase, body, isRapid, rapidValues, out errorMessage); request.AddAdminLog("修改表单显示样式", $"字段名:{body.AttributeName}"); } if (!isSuccess) { return(BadRequest(errorMessage)); } return(Ok(new{})); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Update(int id) { try { var request = new AuthenticatedRequest(); var isAuth = request.IsApiAuthenticated && AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeUsers) || request.IsUserLoggin && request.UserId == id || request.IsAdminLoggin && request.AdminPermissions.HasSystemPermissions(ConfigManager.SettingsPermissions.User); if (!isAuth) { return(Unauthorized()); } var body = request.GetPostObject <Dictionary <string, object> >(); if (body == null) { return(BadRequest("Could not read user from body")); } var userInfo = UserManager.GetUserInfoByUserId(id); if (userInfo == null) { return(NotFound()); } var retval = DataProvider.UserDao.Update(userInfo, body, out var errorMessage); if (retval == null) { return(BadRequest(errorMessage)); } return(Ok(new { Value = retval })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Create() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); var channelContentIds = request.GetPostObject <List <MinContentInfo> >("channelContentIds"); if (!request.IsAdminLoggin) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } foreach (var channelContentId in channelContentIds) { CreateManager.CreateContent(siteId, channelContentId.ChannelId, channelContentId.Id); } return(Ok(new { Value = true })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult UpdateRole(int roleId) { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.SettingsPermissions.Admin)) { return(Unauthorized()); } var roleName = request.GetPostString("roleName"); var description = request.GetPostString("description"); var generalPermissionList = request.GetPostObject <List <string> >("generalPermissions"); var sitePermissionsInRolesInfoList = request.GetPostObject <List <SitePermissionsInfo> >("sitePermissions"); var roleInfo = DataProvider.RoleDao.GetRoleInfo(roleId); if (roleInfo.RoleName != roleName) { if (EPredefinedRoleUtils.IsPredefinedRole(roleName)) { return(BadRequest($"角色添加失败,{roleName}为系统角色!")); } if (DataProvider.RoleDao.IsRoleExists(roleName)) { return(BadRequest("角色名称已存在,请更换角色名称!")); } } DataProvider.PermissionsInRolesDao.Delete(roleInfo.RoleName); DataProvider.SitePermissionsDao.Delete(roleInfo.RoleName); if (generalPermissionList != null && generalPermissionList.Count > 0) { var permissionsInRolesInfo = new PermissionsInRolesInfo(0, roleName, TranslateUtils.ObjectCollectionToString(generalPermissionList)); DataProvider.PermissionsInRolesDao.Insert(permissionsInRolesInfo); } if (sitePermissionsInRolesInfoList != null && sitePermissionsInRolesInfoList.Count > 0) { foreach (var sitePermissionsInfo in sitePermissionsInRolesInfoList) { sitePermissionsInfo.RoleName = roleName; DataProvider.SitePermissionsDao.Insert(sitePermissionsInfo); } } roleInfo.RoleName = roleName; roleInfo.Description = description; DataProvider.RoleDao.UpdateRole(roleInfo); PermissionsImpl.ClearAllCache(); request.AddAdminLog("修改管理员角色", $"角色名称:{roleName}"); return(Ok(new { Value = true })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Update(int siteId, int channelId) { try { var request = new AuthenticatedRequest(); var isAuth = request.IsApiAuthenticated && AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeChannels) || request.IsAdminLoggin && request.AdminPermissions.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ChannelEdit); if (!isAuth) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } channelInfo.Additional.Load(request.GetPostObject <Dictionary <string, object> >()); if (request.IsPostExists(ChannelAttribute.ChannelName)) { channelInfo.ChannelName = request.GetPostString(ChannelAttribute.ChannelName); } if (request.IsPostExists(ChannelAttribute.IndexName)) { var indexName = request.GetPostString(ChannelAttribute.IndexName); if (!channelInfo.IndexName.Equals(indexName) && !string.IsNullOrEmpty(indexName)) { var indexNameList = DataProvider.ChannelDao.GetIndexNameList(siteId); if (indexNameList.IndexOf(indexName) != -1) { return(BadRequest("栏目属性修改失败,栏目索引已存在!")); } } channelInfo.IndexName = indexName; } if (request.IsPostExists(ChannelAttribute.ContentModelPluginId)) { var contentModelPluginId = request.GetPostString(ChannelAttribute.ContentModelPluginId); if (channelInfo.ContentModelPluginId != contentModelPluginId) { channelInfo.ContentModelPluginId = contentModelPluginId; } } if (request.IsPostExists(ChannelAttribute.ContentRelatedPluginIds)) { channelInfo.ContentRelatedPluginIds = request.GetPostString(ChannelAttribute.ContentRelatedPluginIds); } if (request.IsPostExists(ChannelAttribute.FilePath)) { var filePath = request.GetPostString(ChannelAttribute.FilePath); filePath = filePath.Trim(); if (!channelInfo.FilePath.Equals(filePath) && !string.IsNullOrEmpty(filePath)) { if (!DirectoryUtils.IsDirectoryNameCompliant(filePath)) { return(BadRequest("栏目页面路径不符合系统要求!")); } if (PathUtils.IsDirectoryPath(filePath)) { filePath = PageUtils.Combine(filePath, "index.html"); } var filePathList = DataProvider.ChannelDao.GetAllFilePathBySiteId(siteId); if (filePathList.IndexOf(filePath) != -1) { return(BadRequest("栏目修改失败,栏目页面路径已存在!")); } } channelInfo.FilePath = filePath; } if (request.IsPostExists(ChannelAttribute.ChannelFilePathRule)) { var channelFilePathRule = request.GetPostString(ChannelAttribute.ChannelFilePathRule); if (!string.IsNullOrEmpty(channelFilePathRule)) { var filePathRule = channelFilePathRule.Replace("|", string.Empty); if (!DirectoryUtils.IsDirectoryNameCompliant(filePathRule)) { return(BadRequest("栏目页面命名规则不符合系统要求!")); } if (PathUtils.IsDirectoryPath(filePathRule)) { return(BadRequest("栏目页面命名规则必须包含生成文件的后缀!")); } } channelInfo.ChannelFilePathRule = channelFilePathRule; } if (request.IsPostExists(ChannelAttribute.ContentFilePathRule)) { var contentFilePathRule = request.GetPostString(ChannelAttribute.ContentFilePathRule); if (!string.IsNullOrEmpty(contentFilePathRule)) { var filePathRule = contentFilePathRule.Replace("|", string.Empty); if (!DirectoryUtils.IsDirectoryNameCompliant(filePathRule)) { return(BadRequest("内容页面命名规则不符合系统要求!")); } if (PathUtils.IsDirectoryPath(filePathRule)) { return(BadRequest("内容页面命名规则必须包含生成文件的后缀!")); } } channelInfo.ContentFilePathRule = contentFilePathRule; } if (request.IsPostExists(ChannelAttribute.GroupNameCollection)) { channelInfo.GroupNameCollection = request.GetPostString(ChannelAttribute.GroupNameCollection); } if (request.IsPostExists(ChannelAttribute.ImageUrl)) { channelInfo.ImageUrl = request.GetPostString(ChannelAttribute.ImageUrl); } if (request.IsPostExists(ChannelAttribute.Content)) { channelInfo.Content = request.GetPostString(ChannelAttribute.Content); } if (request.IsPostExists(ChannelAttribute.Keywords)) { channelInfo.Keywords = request.GetPostString(ChannelAttribute.Keywords); } if (request.IsPostExists(ChannelAttribute.Description)) { channelInfo.Description = request.GetPostString(ChannelAttribute.Description); } if (request.IsPostExists(ChannelAttribute.LinkUrl)) { channelInfo.LinkUrl = request.GetPostString(ChannelAttribute.LinkUrl); } if (request.IsPostExists(ChannelAttribute.LinkType)) { channelInfo.LinkType = request.GetPostString(ChannelAttribute.LinkType); } if (request.IsPostExists(ChannelAttribute.ChannelTemplateId)) { channelInfo.ChannelTemplateId = request.GetPostInt(ChannelAttribute.ChannelTemplateId); } if (request.IsPostExists(ChannelAttribute.ContentTemplateId)) { channelInfo.ContentTemplateId = request.GetPostInt(ChannelAttribute.ContentTemplateId); } DataProvider.ChannelDao.Update(channelInfo); return(Ok(new { Value = channelInfo.ToDictionary() })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Create(int siteId) { try { var request = new AuthenticatedRequest(); var parentId = request.GetPostInt(ChannelAttribute.ParentId, siteId); var isAuth = request.IsApiAuthenticated && AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeChannels) || request.IsAdminLoggin && request.AdminPermissions.HasChannelPermissions(siteId, parentId, ConfigManager.ChannelPermissions.ChannelAdd); if (!isAuth) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var contentModelPluginId = request.GetPostString(ChannelAttribute.ContentModelPluginId); var contentRelatedPluginIds = request.GetPostString(ChannelAttribute.ContentRelatedPluginIds); var channelName = request.GetPostString(ChannelAttribute.ChannelName); var indexName = request.GetPostString(ChannelAttribute.IndexName); var filePath = request.GetPostString(ChannelAttribute.FilePath); var channelFilePathRule = request.GetPostString(ChannelAttribute.ChannelFilePathRule); var contentFilePathRule = request.GetPostString(ChannelAttribute.ContentFilePathRule); var groupNameCollection = request.GetPostString(ChannelAttribute.GroupNameCollection); var imageUrl = request.GetPostString(ChannelAttribute.ImageUrl); var content = request.GetPostString(ChannelAttribute.Content); var keywords = request.GetPostString(ChannelAttribute.Keywords); var description = request.GetPostString(ChannelAttribute.Description); var linkUrl = request.GetPostString(ChannelAttribute.LinkUrl); var linkType = request.GetPostString(ChannelAttribute.LinkType); var channelTemplateId = request.GetPostInt(ChannelAttribute.ChannelTemplateId); var contentTemplateId = request.GetPostInt(ChannelAttribute.ContentTemplateId); var channelInfo = new ChannelInfo { SiteId = siteId, ParentId = parentId, ContentModelPluginId = contentModelPluginId, ContentRelatedPluginIds = contentRelatedPluginIds }; if (!string.IsNullOrEmpty(indexName)) { var indexNameList = DataProvider.ChannelDao.GetIndexNameList(siteId); if (indexNameList.IndexOf(indexName) != -1) { return(BadRequest("栏目添加失败,栏目索引已存在!")); } } if (!string.IsNullOrEmpty(filePath)) { if (!DirectoryUtils.IsDirectoryNameCompliant(filePath)) { return(BadRequest("栏目页面路径不符合系统要求!")); } if (PathUtils.IsDirectoryPath(filePath)) { filePath = PageUtils.Combine(filePath, "index.html"); } var filePathList = DataProvider.ChannelDao.GetAllFilePathBySiteId(siteId); if (filePathList.IndexOf(filePath) != -1) { return(BadRequest("栏目添加失败,栏目页面路径已存在!")); } } if (!string.IsNullOrEmpty(channelFilePathRule)) { if (!DirectoryUtils.IsDirectoryNameCompliant(channelFilePathRule)) { return(BadRequest("栏目页面命名规则不符合系统要求!")); } if (PathUtils.IsDirectoryPath(channelFilePathRule)) { return(BadRequest("栏目页面命名规则必须包含生成文件的后缀!")); } } if (!string.IsNullOrEmpty(contentFilePathRule)) { if (!DirectoryUtils.IsDirectoryNameCompliant(contentFilePathRule)) { return(BadRequest("内容页面命名规则不符合系统要求!")); } if (PathUtils.IsDirectoryPath(contentFilePathRule)) { return(BadRequest("内容页面命名规则必须包含生成文件的后缀!")); } } //var parentChannelInfo = ChannelManager.GetChannelInfo(siteId, parentId); //var styleInfoList = TableStyleManager.GetChannelStyleInfoList(parentChannelInfo); //var extendedAttributes = BackgroundInputTypeParser.SaveAttributes(siteInfo, styleInfoList, Request.Form, null); channelInfo.Additional.Load(request.GetPostObject <Dictionary <string, object> >()); //foreach (string key in attributes) //{ // channelInfo.Additional.SetExtendedAttribute(key, attributes[key]); //} channelInfo.ChannelName = channelName; channelInfo.IndexName = indexName; channelInfo.FilePath = filePath; channelInfo.ChannelFilePathRule = channelFilePathRule; channelInfo.ContentFilePathRule = contentFilePathRule; channelInfo.GroupNameCollection = groupNameCollection; channelInfo.ImageUrl = imageUrl; channelInfo.Content = content; channelInfo.Keywords = keywords; channelInfo.Description = description; channelInfo.LinkUrl = linkUrl; channelInfo.LinkType = linkType; channelInfo.ChannelTemplateId = channelTemplateId; channelInfo.ContentTemplateId = contentTemplateId; channelInfo.AddDate = DateTime.Now; channelInfo.Id = DataProvider.ChannelDao.Insert(channelInfo); //栏目选择投票样式后,内容 CreateManager.CreateChannel(siteId, channelInfo.Id); request.AddSiteLog(siteId, "添加栏目", $"栏目:{channelName}"); return(Ok(new { Value = channelInfo.ToDictionary() })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var downloadUrl = string.Empty; var siteId = request.GetPostInt("siteId"); var channelId = request.GetPostInt("channelId"); var channelContentIds = MinContentInfo.ParseMinContentInfoList(request.GetPostString("channelContentIds")); var exportType = request.GetPostString("exportType"); var isAllCheckedLevel = request.GetPostBool("isAllCheckedLevel"); var checkedLevelKeys = request.GetPostObject <List <int> >("checkedLevelKeys"); var isAllDate = request.GetPostBool("isAllDate"); var startDate = request.GetPostDateTime("startDate", DateTime.Now); var endDate = request.GetPostDateTime("endDate", DateTime.Now); var columnNames = request.GetPostObject <List <string> >("columnNames"); if (!request.IsAdminLoggin || !request.AdminPermissions.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ChannelEdit)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } var adminId = channelInfo.Additional.IsSelfOnly ? request.AdminId : request.AdminPermissionsImpl.GetAdminId(siteId, channelId); var isAllContents = channelInfo.Additional.IsAllContents; var columns = ContentManager.GetContentColumns(siteInfo, channelInfo, true); var pluginIds = PluginContentManager.GetContentPluginIds(channelInfo); var pluginColumns = PluginContentManager.GetContentColumns(pluginIds); var contentInfoList = new List <ContentInfo>(); var calculatedContentInfoList = new List <ContentInfo>(); if (channelContentIds.Count == 0) { var ccIds = DataProvider.ContentDao.GetCacheChannelContentIdList(siteInfo, channelInfo, adminId, isAllContents, string.Empty, string.Empty); var count = ccIds.Count; var pages = Convert.ToInt32(Math.Ceiling((double)count / siteInfo.Additional.PageSize)); if (pages == 0) { pages = 1; } if (count > 0) { for (var page = 1; page <= pages; page++) { var offset = siteInfo.Additional.PageSize * (page - 1); var limit = siteInfo.Additional.PageSize; var pageCcIds = ccIds.Skip(offset).Take(limit).ToList(); var sequence = offset + 1; foreach (var channelContentId in pageCcIds) { var contentInfo = ContentManager.GetContentInfo(siteInfo, channelContentId.ChannelId, channelContentId.ContentId); if (contentInfo == null) { continue; } if (!isAllCheckedLevel) { var checkedLevel = contentInfo.CheckedLevel; if (contentInfo.IsChecked) { checkedLevel = siteInfo.Additional.CheckContentLevel; } if (!checkedLevelKeys.Contains(checkedLevel)) { continue; } } if (!isAllDate) { if (contentInfo.AddDate < startDate || contentInfo.AddDate > endDate) { continue; } } contentInfoList.Add(contentInfo); calculatedContentInfoList.Add(ContentManager.Calculate(sequence++, contentInfo, columns, pluginColumns)); } } } } else { var sequence = 1; foreach (var channelContentId in channelContentIds) { var contentInfo = ContentManager.GetContentInfo(siteInfo, channelContentId.ChannelId, channelContentId.Id); if (contentInfo == null) { continue; } if (!isAllCheckedLevel) { var checkedLevel = contentInfo.CheckedLevel; if (contentInfo.IsChecked) { checkedLevel = siteInfo.Additional.CheckContentLevel; } if (!checkedLevelKeys.Contains(checkedLevel)) { continue; } } if (!isAllDate) { if (contentInfo.AddDate < startDate || contentInfo.AddDate > endDate) { continue; } } contentInfoList.Add(contentInfo); calculatedContentInfoList.Add(ContentManager.Calculate(sequence++, contentInfo, columns, pluginColumns)); } } if (contentInfoList.Count > 0) { if (exportType == "zip") { var fileName = $"{channelInfo.ChannelName}.zip"; var filePath = PathUtils.GetTemporaryFilesPath(fileName); var exportObject = new ExportObject(siteId, request.AdminName); contentInfoList.Reverse(); if (exportObject.ExportContents(filePath, contentInfoList)) { downloadUrl = PageUtils.GetTemporaryFilesUrl(fileName); } } else if (exportType == "excel") { var fileName = $"{channelInfo.ChannelName}.csv"; var filePath = PathUtils.GetTemporaryFilesPath(fileName); ExcelObject.CreateExcelFileForContents(filePath, siteInfo, channelInfo, calculatedContentInfoList, columnNames); downloadUrl = PageUtils.GetTemporaryFilesUrl(fileName); } } return(Ok(new { Value = downloadUrl, IsSuccess = !string.IsNullOrEmpty(downloadUrl) })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Update(int siteId, int channelId, int id) { try { var request = new AuthenticatedRequest(); var sourceId = request.GetPostInt(ContentAttribute.SourceId.ToCamelCase()); bool isAuth; if (sourceId == SourceManager.User) { isAuth = request.IsUserLoggin && request.UserPermissions.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentEdit); } else { isAuth = request.IsApiAuthenticated && AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeContents) || request.IsUserLoggin && request.UserPermissions.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentEdit) || request.IsAdminLoggin && request.AdminPermissions.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentEdit); } if (!isAuth) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } var attributes = request.GetPostObject <Dictionary <string, object> >(); if (attributes == null) { return(BadRequest("无法从body中获取内容实体")); } var adminName = request.AdminName; var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, id); if (contentInfo == null) { return(NotFound()); } contentInfo.Load(attributes); contentInfo.Load(new { SiteId = siteId, ChannelId = channelId, AddUserName = adminName, LastEditDate = DateTime.Now, LastEditUserName = adminName, SourceId = sourceId }); var postCheckedLevel = request.GetPostInt(ContentAttribute.CheckedLevel.ToCamelCase()); var isChecked = postCheckedLevel >= siteInfo.Additional.CheckContentLevel; var checkedLevel = postCheckedLevel; contentInfo.Load(new { IsChecked = isChecked, CheckedLevel = checkedLevel }); DataProvider.ContentDao.Update(siteInfo, channelInfo, contentInfo); foreach (var service in PluginManager.Services) { try { service.OnContentFormSubmit(new ContentFormSubmitEventArgs(siteId, channelId, contentInfo.Id, attributes, contentInfo)); } catch (Exception ex) { LogUtils.AddErrorLog(service.PluginId, ex, nameof(IService.ContentFormSubmit)); } } if (contentInfo.IsChecked) { CreateManager.CreateContent(siteId, channelId, contentInfo.Id); CreateManager.TriggerContentChangedEvent(siteId, channelId); } request.AddSiteLog(siteId, channelId, contentInfo.Id, "修改内容", $"栏目:{ChannelManager.GetChannelNameNavigation(siteId, contentInfo.ChannelId)},内容标题:{contentInfo.Title}"); return(Ok(new { Value = contentInfo.ToDictionary() })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); var channelId = request.GetPostInt("channelId"); var importType = request.GetPostString("importType"); var checkedLevel = request.GetPostInt("checkedLevel"); var isOverride = request.GetPostBool("isOverride"); var fileNames = request.GetPostObject <List <string> >("fileNames"); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentAdd)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } var isChecked = checkedLevel >= siteInfo.Additional.CheckContentLevel; if (importType == "zip") { foreach (var fileName in fileNames) { var localFilePath = PathUtils.GetTemporaryFilesPath(fileName); if (!EFileSystemTypeUtils.Equals(EFileSystemType.Zip, PathUtils.GetExtension(localFilePath))) { continue; } var importObject = new ImportObject(siteId, request.AdminName); importObject.ImportContentsByZipFile(channelInfo, localFilePath, isOverride, isChecked, checkedLevel, request.AdminId, 0, SourceManager.Default); } } else if (importType == "csv") { foreach (var fileName in fileNames) { var localFilePath = PathUtils.GetTemporaryFilesPath(fileName); if (!EFileSystemTypeUtils.Equals(EFileSystemType.Csv, PathUtils.GetExtension(localFilePath))) { continue; } var importObject = new ImportObject(siteId, request.AdminName); importObject.ImportContentsByCsvFile(channelInfo, localFilePath, isOverride, isChecked, checkedLevel, request.AdminId, 0, SourceManager.Default); } } else if (importType == "txt") { foreach (var fileName in fileNames) { var localFilePath = PathUtils.GetTemporaryFilesPath(fileName); if (!EFileSystemTypeUtils.Equals(EFileSystemType.Txt, PathUtils.GetExtension(localFilePath))) { continue; } var importObject = new ImportObject(siteId, request.AdminName); importObject.ImportContentsByTxtFile(channelInfo, localFilePath, isOverride, isChecked, checkedLevel, request.AdminId, 0, SourceManager.Default); } } request.AddSiteLog(siteId, channelId, 0, "导入内容", string.Empty); return(Ok(new { Value = true })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }