diff --git a/SiteServer.BackgroundPages/Cms/PageTemplateMatch.cs b/SiteServer.BackgroundPages/Cms/PageTemplateMatch.cs index f005d4a0b..6da7758a4 100644 --- a/SiteServer.BackgroundPages/Cms/PageTemplateMatch.cs +++ b/SiteServer.BackgroundPages/Cms/PageTemplateMatch.cs @@ -252,14 +252,18 @@ private void Process(List channelIdList, int templateId, bool isChannelTemp { foreach (var channelId in channelIdList) { - TemplateManager.UpdateChannelTemplateId(SiteId, channelId, templateId); + var channelInfo = ChannelManager.GetChannelInfo(SiteId, channelId); + channelInfo.ChannelTemplateId = templateId; + DataProvider.ChannelDao.UpdateChannelTemplateId(channelInfo); } } else { foreach (var channelId in channelIdList) { - TemplateManager.UpdateContentTemplateId(SiteId, channelId, templateId); + var channelInfo = ChannelManager.GetChannelInfo(SiteId, channelId); + channelInfo.ContentTemplateId = templateId; + DataProvider.ChannelDao.UpdateContentTemplateId(channelInfo); } } } @@ -340,7 +344,10 @@ public void CreateChannelTemplate_Click(object sender, EventArgs e) var insertedTemplateId = DataProvider.TemplateDao.Insert(templateInfo, string.Empty, AuthRequest.AdminName); if (nodeInfo.ParentId > 0) { - TemplateManager.UpdateChannelTemplateId(SiteId, channelId, insertedTemplateId); + nodeInfo.ChannelTemplateId = insertedTemplateId; + DataProvider.ChannelDao.UpdateChannelTemplateId(nodeInfo); + + //TemplateManager.UpdateChannelTemplateId(SiteId, channelId, insertedTemplateId); //DataProvider.BackgroundNodeDAO.UpdateChannelTemplateID(channelId, insertedTemplateID); } @@ -381,7 +388,11 @@ public void CreateSubChannelTemplate_Click(object sender, EventArgs e) var childChannelIdList = ChannelManager.GetChannelIdList(ChannelManager.GetChannelInfo(SiteId, channelId), EScopeType.Descendant, string.Empty, string.Empty, string.Empty); foreach (var childChannelId in childChannelIdList) { - TemplateManager.UpdateChannelTemplateId(SiteId, childChannelId, insertedTemplateId); + var childChannelInfo = ChannelManager.GetChannelInfo(SiteId, childChannelId); + childChannelInfo.ChannelTemplateId = insertedTemplateId; + DataProvider.ChannelDao.UpdateChannelTemplateId(childChannelInfo); + + //TemplateManager.UpdateChannelTemplateId(SiteId, childChannelId, insertedTemplateId); //DataProvider.BackgroundNodeDAO.UpdateChannelTemplateID(childChannelId, insertedTemplateID); } } @@ -430,7 +441,12 @@ public void CreateContentTemplate_Click(object sender, EventArgs e) continue; } var insertedTemplateId = DataProvider.TemplateDao.Insert(templateInfo, string.Empty, AuthRequest.AdminName); - TemplateManager.UpdateContentTemplateId(SiteId, channelId, insertedTemplateId); + + var channelInfo = ChannelManager.GetChannelInfo(SiteId, channelId); + channelInfo.ContentTemplateId = insertedTemplateId; + DataProvider.ChannelDao.UpdateContentTemplateId(channelInfo); + + //TemplateManager.UpdateContentTemplateId(SiteId, channelId, insertedTemplateId); //DataProvider.BackgroundNodeDAO.UpdateContentTemplateID(channelId, insertedTemplateID); } } @@ -469,7 +485,11 @@ public void CreateSubContentTemplate_Click(object sender, EventArgs e) var childChannelIdList = ChannelManager.GetChannelIdList(ChannelManager.GetChannelInfo(SiteId, channelId), EScopeType.Descendant, string.Empty, string.Empty, string.Empty); foreach (var childChannelId in childChannelIdList) { - TemplateManager.UpdateContentTemplateId(SiteId, childChannelId, insertedTemplateId); + var childChannelInfo = ChannelManager.GetChannelInfo(SiteId, childChannelId); + childChannelInfo.ContentTemplateId = insertedTemplateId; + DataProvider.ChannelDao.UpdateContentTemplateId(childChannelInfo); + + //TemplateManager.UpdateContentTemplateId(SiteId, childChannelId, insertedTemplateId); //DataProvider.BackgroundNodeDAO.UpdateContentTemplateID(childChannelId, insertedTemplateID); } } diff --git a/SiteServer.BackgroundPages/SiteServer.BackgroundPages.csproj b/SiteServer.BackgroundPages/SiteServer.BackgroundPages.csproj index 011741b00..5879bf004 100644 --- a/SiteServer.BackgroundPages/SiteServer.BackgroundPages.csproj +++ b/SiteServer.BackgroundPages/SiteServer.BackgroundPages.csproj @@ -40,8 +40,8 @@ ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll - - ..\packages\SiteServer.Plugin.2.0.16\lib\net45\SiteServer.Plugin.dll + + ..\packages\SiteServer.Plugin.2.0.17\lib\net45\SiteServer.Plugin.dll diff --git a/SiteServer.BackgroundPages/packages.config b/SiteServer.BackgroundPages/packages.config index e1aa9804e..ef6d0dbef 100644 --- a/SiteServer.BackgroundPages/packages.config +++ b/SiteServer.BackgroundPages/packages.config @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/SiteServer.CMS/Api/V1/ORequest.cs b/SiteServer.CMS/Api/V1/ORequest.cs deleted file mode 100644 index 0eaaf3f05..000000000 --- a/SiteServer.CMS/Api/V1/ORequest.cs +++ /dev/null @@ -1,42 +0,0 @@ -using SiteServer.CMS.Plugin; -using SiteServer.CMS.Plugin.Impl; -using SiteServer.Utils; - -namespace SiteServer.CMS.Api.V1 -{ - public class ORequest: RequestImpl - { - //{"select", "ID,Name"}, - //{"expand", "ProductDetail"}, - //{"filter", "Categories/any(d:d/ID gt 1)"}, - //{"orderby", "ID desc"}, - //{"top", "10"}, - //{"skip", "20"}, - //{"count", "true"}, - //{"search", "tom"} - - public ORequest(string scope) : base(scope) - { - - } - - public OFilter Filter => OUtils.ParseFilter(QueryString["filter"]); - - public int Top - { - get - { - var top = TranslateUtils.ToInt(QueryString["top"], 20); - return top > 0 ? top : 20; - } - } - - public int Skip => TranslateUtils.ToInt(QueryString["skip"]); - - public string Like => QueryString["like"]; - - public string OrderBy => QueryString["orderBy"]; - - public string RawUrl => HttpRequest.Url.AbsoluteUri; - } -} diff --git a/SiteServer.CMS/Api/V1/OResponse.cs b/SiteServer.CMS/Api/V1/OResponse.cs index 1c6a81e3c..0e48afd48 100644 --- a/SiteServer.CMS/Api/V1/OResponse.cs +++ b/SiteServer.CMS/Api/V1/OResponse.cs @@ -8,18 +8,17 @@ namespace SiteServer.CMS.Api.V1 { public class OResponse { - private ORequest _request; private int? _count; + private int? _top; + private int? _skip; + private string _rowUrl; - public OResponse(object value) + public OResponse(object value, int top, int skip, string rowUrl) { Value = value; - } - - public OResponse(ORequest request, object value) - { - _request = request; - Value = value; + _top = top; + _skip = skip; + _rowUrl = rowUrl; } [JsonProperty(PropertyName = "value")] @@ -37,8 +36,6 @@ public OResponse(ORequest request, object value) [JsonProperty(PropertyName = "last", NullValueHandling = NullValueHandling.Ignore)] public string Last { get; private set; } - - [JsonProperty(PropertyName = "count", NullValueHandling = NullValueHandling.Ignore)] public int? Count { @@ -46,45 +43,45 @@ public int? Count set { _count = value; - if (_request != null && _count != null) + if (_count != null && _top != null && _skip != null && _rowUrl != null) { - var url = PageUtils.RemoveQueryString(_request.RawUrl, new List {"top", "skip"}); - var pages = Convert.ToInt32(Math.Ceiling(Convert.ToDouble((int)_count / _request.Top))); - var pageIndex = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(_request.Skip / _request.Top))); + var url = PageUtils.RemoveQueryString(_rowUrl, new List {"top", "skip"}); + var pages = Convert.ToInt32(Math.Ceiling(Convert.ToDouble((int)_count / _top))); + var pageIndex = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(_skip / _top))); - if (_request.Skip > 0) + if (_skip > 0) { First = PageUtils.AddQueryString(url, new NameValueCollection { - {"top", _request.Top.ToString()}, + {"top", _top.ToString()}, {"skip", "0"} }); Prev = PageUtils.AddQueryString(url, new NameValueCollection { - {"top", _request.Top.ToString()}, - {"skip", ((pageIndex - 1) * _request.Top).ToString()} + {"top", _top.ToString()}, + {"skip", ((pageIndex - 1) * _top).ToString()} }); } - if (_request.Top + _request.Skip < _count) + if (_top + _skip < _count) { Next = PageUtils.AddQueryString(url, new NameValueCollection { - {"top", _request.Top.ToString()}, - {"skip", ((pageIndex + 1) * _request.Top).ToString()} + {"top", _top.ToString()}, + {"skip", ((pageIndex + 1) * _top).ToString()} }); Last = PageUtils.AddQueryString(url, new NameValueCollection { - {"top", _request.Top.ToString()}, - {"skip", ((pages - 1) * _request.Top).ToString()} + {"top", _top.ToString()}, + {"skip", ((pages - 1) * _top).ToString()} }); } } diff --git a/SiteServer.CMS/Api/V1/StlRequest.cs b/SiteServer.CMS/Api/V1/StlRequest.cs index 3b9e94df9..7d942610a 100644 --- a/SiteServer.CMS/Api/V1/StlRequest.cs +++ b/SiteServer.CMS/Api/V1/StlRequest.cs @@ -1,8 +1,6 @@ using System.Collections.Generic; -using SiteServer.CMS.Core; using SiteServer.CMS.DataCache; using SiteServer.CMS.Model; -using SiteServer.CMS.Plugin; using SiteServer.CMS.Plugin.Impl; using SiteServer.CMS.StlParser.Model; using SiteServer.Plugin; @@ -25,8 +23,8 @@ public class StlRequest public StlRequest() { - Request = new RequestImpl(AccessTokenManager.ScopeStl); - IsApiAuthorized = Request.IsApiAuthorized; + Request = new RequestImpl(); + IsApiAuthorized = Request.IsApiAuthenticated && AccessTokenManager.IsScope(Request.ApiToken, AccessTokenManager.ScopeStl); if (!IsApiAuthorized) return; diff --git a/SiteServer.CMS/DataCache/ChannelManager.cs b/SiteServer.CMS/DataCache/ChannelManager.cs index f0dcaa993..8094c9003 100644 --- a/SiteServer.CMS/DataCache/ChannelManager.cs +++ b/SiteServer.CMS/DataCache/ChannelManager.cs @@ -21,18 +21,6 @@ private static class ChannelManagerCache { private static readonly object LockObject = new object(); private static readonly string CacheKey = DataCacheManager.GetCacheKey(nameof(ChannelManager)); - //private static readonly FileWatcherClass FileWatcher; - - //static ChannelManagerCache() - //{ - // FileWatcher = new FileWatcherClass(FileWatcherClass.Channel); - // FileWatcher.OnFileChange += FileWatcher_OnFileChange; - //} - - //private static void FileWatcher_OnFileChange(object sender, EventArgs e) - //{ - // CacheManager.Remove(CacheKey); - //} private static void Update(Dictionary> allDict, Dictionary dic, int siteId) { @@ -60,8 +48,16 @@ public static void Remove(int siteId) { allDict.Remove(siteId); } + } - //FileWatcher.UpdateCacheFile(); + public static void Update(int siteId, ChannelInfo channelInfo) + { + var dict = GetChannelInfoDictionaryBySiteId(siteId); + + lock (LockObject) + { + dict[channelInfo.Id] = channelInfo; + } } public static Dictionary GetChannelInfoDictionaryBySiteId(int siteId) @@ -79,12 +75,18 @@ public static Dictionary GetChannelInfoDictionaryBySiteId(int } } - public static void RemoveCache(int siteId) + public static void RemoveCacheBySiteId(int siteId) { ChannelManagerCache.Remove(siteId); StlChannelCache.ClearCache(); } + public static void UpdateCache(int siteId, ChannelInfo channelInfo) + { + ChannelManagerCache.Update(siteId, channelInfo); + StlChannelCache.ClearCache(); + } + public static ChannelInfo GetChannelInfo(int siteId, int channelId) { ChannelInfo channelInfo = null; diff --git a/SiteServer.CMS/DataCache/TemplateManager.cs b/SiteServer.CMS/DataCache/TemplateManager.cs index 8b951c8c6..b54606e17 100644 --- a/SiteServer.CMS/DataCache/TemplateManager.cs +++ b/SiteServer.CMS/DataCache/TemplateManager.cs @@ -305,16 +305,6 @@ public static void WriteContentToTemplateFile(SiteInfo siteInfo, TemplateInfo te } } - public static void UpdateChannelTemplateId(int siteId, int channelId, int channelTemplateId) - { - DataProvider.ChannelDao.UpdateChannelTemplateId(channelId, channelTemplateId); - } - - public static void UpdateContentTemplateId(int siteId, int channelId, int contentTemplateId) - { - DataProvider.ChannelDao.UpdateContentTemplateId(channelId, contentTemplateId); - } - public static int GetIndexTempalteId(int siteId) { return GetDefaultTemplateId(siteId, TemplateType.IndexPageTemplate); diff --git a/SiteServer.CMS/Plugin/Apis/ChannelApi.cs b/SiteServer.CMS/Plugin/Apis/ChannelApi.cs index c366183c3..3242d54fb 100644 --- a/SiteServer.CMS/Plugin/Apis/ChannelApi.cs +++ b/SiteServer.CMS/Plugin/Apis/ChannelApi.cs @@ -100,7 +100,8 @@ public string GetChannelName(int siteId, int channelId) public void Update(int siteId, IChannelInfo channelInfo) { - DataProvider.ChannelDao.Update(channelInfo); + if (channelInfo == null) return; + DataProvider.ChannelDao.Update((ChannelInfo)channelInfo); } public void Delete(int siteId, int channelId) diff --git a/SiteServer.CMS/Plugin/Impl/RequestImpl.cs b/SiteServer.CMS/Plugin/Impl/RequestImpl.cs index 085b65573..dc1a6362a 100644 --- a/SiteServer.CMS/Plugin/Impl/RequestImpl.cs +++ b/SiteServer.CMS/Plugin/Impl/RequestImpl.cs @@ -29,13 +29,6 @@ public class RequestImpl : IRequest public const int AccessTokenExpireDays = 7; - private readonly string _scope; - - public RequestImpl(string scope) : this(HttpContext.Current.Request) - { - _scope = scope; - } - public RequestImpl() : this(HttpContext.Current.Request) { } @@ -56,6 +49,7 @@ public RequestImpl(HttpRequest request) if (adminInfo != null && !adminInfo.IsLockedOut) { AdminInfo = adminInfo; + IsAdminLoggin = true; } } @@ -73,11 +67,9 @@ public RequestImpl(HttpRequest request) if (userInfo != null && !userInfo.IsLockedOut && userInfo.IsChecked && userInfo.UserName == tokenImpl.UserName) { UserInfo = userInfo; - IsUserLoggin = true; } } - } var adminToken = AdminToken; @@ -90,7 +82,6 @@ public RequestImpl(HttpRequest request) if (adminInfo != null && !adminInfo.IsLockedOut && adminInfo.UserName == tokenImpl.UserName) { AdminInfo = adminInfo; - IsAdminLoggin = true; } } @@ -98,10 +89,11 @@ public RequestImpl(HttpRequest request) } public bool IsApiAuthenticated { get; } + public bool IsApiAuthorized { get; } public bool IsUserLoggin { get; } - public bool IsAdminLoggin { get; } + public bool IsAdminLoggin { get; private set; } public string ApiToken { @@ -453,6 +445,7 @@ public string AdminLogin(string userName, bool isAutoLogin) if (adminInfo == null || adminInfo.IsLockedOut) return null; AdminInfo = adminInfo; + IsAdminLoggin = true; var expiresAt = DateTime.Now.AddDays(AccessTokenExpireDays); var accessToken = GetAccessToken(adminInfo.Id, adminInfo.UserName, expiresAt); @@ -478,27 +471,6 @@ public void AdminLogout() #endregion - #region ApiKey - - public bool IsApiAuthorized => IsApiAuthenticated && !string.IsNullOrEmpty(_scope) && AccessTokenManager.IsScope(ApiToken, _scope); - - public bool IsUserAuthorized(int userId) - { - var isAuthorized = false; - if (IsApiAuthenticated && IsApiAuthorized) - { - isAuthorized = true; - } - else if (IsUserLoggin && UserId == userId) - { - isAuthorized = true; - } - - return isAuthorized; - } - - #endregion - #region User public int UserId => UserInfo?.Id ?? 0; diff --git a/SiteServer.CMS/Plugin/PluginManager.cs b/SiteServer.CMS/Plugin/PluginManager.cs index 61e313a64..8ff86fc22 100644 --- a/SiteServer.CMS/Plugin/PluginManager.cs +++ b/SiteServer.CMS/Plugin/PluginManager.cs @@ -185,7 +185,7 @@ public static void LoadPlugins(string applicationPhysicalPath) WebConfigUtils.Load(applicationPhysicalPath); _pluginInfoListRunnable = PluginInfoListRunnable; - PluginContext.Initialize(new EnvironmentImpl(WebConfigUtils.DatabaseType, WebConfigUtils.ConnectionString, WebConfigUtils.AdminDirectory, WebConfigUtils.PhysicalApplicationPath), new ApiCollectionImpl + Context.Initialize(new EnvironmentImpl(WebConfigUtils.DatabaseType, WebConfigUtils.ConnectionString, WebConfigUtils.AdminDirectory, WebConfigUtils.PhysicalApplicationPath), new ApiCollectionImpl { AdminApi = AdminApi.Instance, ConfigApi = ConfigApi.Instance, diff --git a/SiteServer.CMS/Provider/ChannelDao.cs b/SiteServer.CMS/Provider/ChannelDao.cs index 42498d231..a1a0cbb62 100644 --- a/SiteServer.CMS/Provider/ChannelDao.cs +++ b/SiteServer.CMS/Provider/ChannelDao.cs @@ -309,7 +309,7 @@ private void InsertChannelInfoWithTrans(IChannelInfo parentChannelInfo, IChannel ExecuteNonQuery(trans, sqlUpdateIsLastNode); //OwningIdCache.IsChanged = true; - ChannelManager.RemoveCache(channelInfo.SiteId); + ChannelManager.RemoveCacheBySiteId(channelInfo.SiteId); PermissionsImpl.ClearAllCache(); } @@ -691,7 +691,7 @@ public int InsertSiteInfo(ChannelInfo channelInfo, SiteInfo siteInfo, string adm return channelInfo.Id; } - public void Update(IChannelInfo channelInfo) + public void Update(ChannelInfo channelInfo) { var updateParms = new IDataParameter[] { @@ -721,9 +721,29 @@ public void Update(IChannelInfo channelInfo) ExecuteNonQuery(SqlUpdate, updateParms); - ChannelManager.RemoveCache(channelInfo.ParentId == 0 - ? channelInfo.Id - : channelInfo.SiteId); + ChannelManager.UpdateCache(channelInfo.SiteId, channelInfo); + + //ChannelManager.RemoveCache(channelInfo.ParentId == 0 + // ? channelInfo.Id + // : channelInfo.SiteId); + } + + public void UpdateChannelTemplateId(ChannelInfo channelInfo) + { + string sqlString = + $"UPDATE siteserver_Channel SET ChannelTemplateId = {channelInfo.ChannelTemplateId} WHERE Id = {channelInfo.Id}"; + ExecuteNonQuery(sqlString); + + ChannelManager.UpdateCache(channelInfo.SiteId, channelInfo); + } + + public void UpdateContentTemplateId(ChannelInfo channelInfo) + { + string sqlString = + $"UPDATE siteserver_Channel SET ContentTemplateId = {channelInfo.ContentTemplateId} WHERE Id = {channelInfo.Id}"; + ExecuteNonQuery(sqlString); + + ChannelManager.UpdateCache(channelInfo.SiteId, channelInfo); } public void UpdateAdditional(ChannelInfo channelInfo) @@ -736,9 +756,11 @@ public void UpdateAdditional(ChannelInfo channelInfo) ExecuteNonQuery(SqlUpdateExtendValues, updateParms); - ChannelManager.RemoveCache(channelInfo.ParentId == 0 - ? channelInfo.Id - : channelInfo.SiteId); + ChannelManager.UpdateCache(channelInfo.SiteId, channelInfo); + + //ChannelManager.RemoveCache(channelInfo.ParentId == 0 + // ? channelInfo.Id + // : channelInfo.SiteId); } /// @@ -754,19 +776,7 @@ public void UpdateTaxis(int siteId, int selectedId, bool isSubtract) { TaxisAdd(siteId, selectedId); } - ChannelManager.RemoveCache(siteId); - } - - private void UpdateGroupNameCollection(int siteId, int channelId, string groupNameCollection) - { - var parms = new IDataParameter[] - { - GetParameter(ParmGroupNameCollection, DataType.VarChar, 255, groupNameCollection), - GetParameter(ParmId, DataType.Integer, channelId) - }; - - ExecuteNonQuery(SqlUpdateGroupNameCollection, parms); - ChannelManager.RemoveCache(siteId); + ChannelManager.RemoveCacheBySiteId(siteId); } public void AddGroupNameList(int siteId, int channelId, List groupList) @@ -779,7 +789,18 @@ public void AddGroupNameList(int siteId, int channelId, List groupList) { if (!list.Contains(groupName)) list.Add(groupName); } - UpdateGroupNameCollection(siteId, channelId, TranslateUtils.ObjectCollectionToString(list)); + + channelInfo.GroupNameCollection = TranslateUtils.ObjectCollectionToString(list); + + var parms = new IDataParameter[] + { + GetParameter(ParmGroupNameCollection, DataType.VarChar, 255, channelInfo.GroupNameCollection), + GetParameter(ParmId, DataType.Integer, channelId) + }; + + ExecuteNonQuery(SqlUpdateGroupNameCollection, parms); + + ChannelManager.UpdateCache(siteId, channelInfo); } public void Delete(int siteId, int channelId) @@ -837,7 +858,7 @@ public void Delete(int siteId, int channelId) } else { - ChannelManager.RemoveCache(channelInfo.SiteId); + ChannelManager.RemoveCacheBySiteId(channelInfo.SiteId); } } @@ -1109,24 +1130,6 @@ public int GetSequence(int siteId, int channelId) return DataProvider.DatabaseDao.GetIntResult(sqlString) + 1; } - public void UpdateChannelTemplateId(int channelId, int channelTemplateId) - { - string sqlString = - $"UPDATE siteserver_Channel SET ChannelTemplateId = {channelTemplateId} WHERE Id = {channelId}"; - ExecuteNonQuery(sqlString); - - ChannelManager.RemoveCache(channelId); - } - - public void UpdateContentTemplateId(int channelId, int contentTemplateId) - { - string sqlString = - $"UPDATE siteserver_Channel SET ContentTemplateId = {contentTemplateId} WHERE Id = {channelId}"; - ExecuteNonQuery(sqlString); - - ChannelManager.RemoveCache(channelId); - } - public List GetIdListByTotalNum(List channelIdList, int totalNum, string orderByString, string whereString) { if (channelIdList == null || channelIdList.Count == 0) diff --git a/SiteServer.CMS/Provider/SiteDao.cs b/SiteServer.CMS/Provider/SiteDao.cs index 8d3ed6940..8abd2c5f2 100644 --- a/SiteServer.CMS/Provider/SiteDao.cs +++ b/SiteServer.CMS/Provider/SiteDao.cs @@ -112,7 +112,7 @@ public void Delete(int siteId) ExecuteNonQuery($"DELETE FROM siteserver_Site WHERE Id = {siteId}"); SiteManager.ClearCache(); - ChannelManager.RemoveCache(siteId); + ChannelManager.RemoveCacheBySiteId(siteId); PermissionsImpl.ClearAllCache(); } diff --git a/SiteServer.CMS/SiteServer.CMS.csproj b/SiteServer.CMS/SiteServer.CMS.csproj index c853132da..7a9cd3e49 100644 --- a/SiteServer.CMS/SiteServer.CMS.csproj +++ b/SiteServer.CMS/SiteServer.CMS.csproj @@ -55,8 +55,8 @@ ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll - - ..\packages\Npgsql.3.2.7\lib\net451\Npgsql.dll + + ..\packages\Npgsql.4.0.3\lib\net451\Npgsql.dll ..\packages\NuGet.Common.4.5.0\lib\net45\NuGet.Common.dll @@ -80,8 +80,8 @@ ..\packages\Oracle.ManagedDataAccess.12.2.1100\lib\net40\Oracle.ManagedDataAccess.dll True - - ..\packages\SiteServer.Plugin.2.0.16\lib\net45\SiteServer.Plugin.dll + + ..\packages\SiteServer.Plugin.2.0.17\lib\net45\SiteServer.Plugin.dll @@ -95,10 +95,16 @@ - - ..\packages\System.Threading.Tasks.Extensions.4.3.0\lib\portable-net45+win8+wp8+wpa81\System.Threading.Tasks.Extensions.dll + + ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0\lib\netstandard1.0\System.Runtime.CompilerServices.Unsafe.dll + + + ..\packages\System.Threading.Tasks.Extensions.4.5.0\lib\portable-net45+win8+wp8+wpa81\System.Threading.Tasks.Extensions.dll + + ..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll + @@ -132,7 +138,6 @@ - diff --git a/SiteServer.CMS/packages.config b/SiteServer.CMS/packages.config index 922347cb8..a2ef01e14 100644 --- a/SiteServer.CMS/packages.config +++ b/SiteServer.CMS/packages.config @@ -8,7 +8,7 @@ - + @@ -16,6 +16,8 @@ - - + + + + \ No newline at end of file diff --git a/SiteServer.Cli/SiteServer.Cli.csproj b/SiteServer.Cli/SiteServer.Cli.csproj index 268391ee0..7baf38b38 100644 --- a/SiteServer.Cli/SiteServer.Cli.csproj +++ b/SiteServer.Cli/SiteServer.Cli.csproj @@ -57,8 +57,8 @@ ..\packages\Quartz.3.0.6\lib\net452\Quartz.dll - - ..\packages\SiteServer.Plugin.2.0.16\lib\net45\SiteServer.Plugin.dll + + ..\packages\SiteServer.Plugin.2.0.17\lib\net45\SiteServer.Plugin.dll diff --git a/SiteServer.Cli/app.config b/SiteServer.Cli/app.config index dde2c3cc6..a692d9b99 100644 --- a/SiteServer.Cli/app.config +++ b/SiteServer.Cli/app.config @@ -6,6 +6,10 @@ + + + + \ No newline at end of file diff --git a/SiteServer.Cli/packages.config b/SiteServer.Cli/packages.config index 85ac61b87..763c77357 100644 --- a/SiteServer.Cli/packages.config +++ b/SiteServer.Cli/packages.config @@ -6,5 +6,5 @@ - + \ No newline at end of file diff --git a/SiteServer.Utils/SiteServer.Utils.csproj b/SiteServer.Utils/SiteServer.Utils.csproj index 1f1890f68..a9bd61c10 100644 --- a/SiteServer.Utils/SiteServer.Utils.csproj +++ b/SiteServer.Utils/SiteServer.Utils.csproj @@ -52,15 +52,15 @@ ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll - - ..\packages\Npgsql.3.2.7\lib\net451\Npgsql.dll + + ..\packages\Npgsql.4.0.3\lib\net451\Npgsql.dll ..\packages\Oracle.ManagedDataAccess.12.2.1100\lib\net40\Oracle.ManagedDataAccess.dll True - - ..\packages\SiteServer.Plugin.2.0.16\lib\net45\SiteServer.Plugin.dll + + ..\packages\SiteServer.Plugin.2.0.17\lib\net45\SiteServer.Plugin.dll @@ -73,11 +73,17 @@ + + ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0\lib\netstandard1.0\System.Runtime.CompilerServices.Unsafe.dll + - - ..\packages\System.Threading.Tasks.Extensions.4.3.0\lib\portable-net45+win8+wp8+wpa81\System.Threading.Tasks.Extensions.dll + + ..\packages\System.Threading.Tasks.Extensions.4.5.0\lib\portable-net45+win8+wp8+wpa81\System.Threading.Tasks.Extensions.dll + + ..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll + diff --git a/SiteServer.Utils/packages.config b/SiteServer.Utils/packages.config index 23e5015c5..df93e25b3 100644 --- a/SiteServer.Utils/packages.config +++ b/SiteServer.Utils/packages.config @@ -7,8 +7,10 @@ - + - - + + + + \ No newline at end of file diff --git a/SiteServer.Web/Controllers/Plugins/PluginController.cs b/SiteServer.Web/Controllers/Plugins/PluginController.cs index d97bd6f19..2a6749a52 100644 --- a/SiteServer.Web/Controllers/Plugins/PluginController.cs +++ b/SiteServer.Web/Controllers/Plugins/PluginController.cs @@ -19,7 +19,7 @@ public IHttpActionResult Get(string pluginId) { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiGet(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(null, null, null), null, null, null))); @@ -36,7 +36,7 @@ public IHttpActionResult GetAction(string pluginId, string routeAction) { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiGet(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(null, null, routeAction), null, null, routeAction))); @@ -53,7 +53,7 @@ public IHttpActionResult GetResource(string pluginId, string routeResource) { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiGet(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, null, null), routeResource, null, null))); @@ -70,7 +70,7 @@ public IHttpActionResult GetResourceAction(string pluginId, string routeResource { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiGet(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, null, routeAction), routeResource, null, routeAction))); @@ -87,7 +87,7 @@ public IHttpActionResult GetResourceId(string pluginId, string routeResource, st { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiGet(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, routeId, null), routeResource, routeId, null))); @@ -104,7 +104,7 @@ public IHttpActionResult GetResourceIdAction(string pluginId, string routeResour { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiGet(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, routeId, routeAction), routeResource, routeId, routeAction))); @@ -121,7 +121,7 @@ public IHttpActionResult Post(string pluginId) { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiPost(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(null, null, null), null, null, null))); @@ -138,7 +138,7 @@ public IHttpActionResult PostAction(string pluginId, string routeAction) { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiPost(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(null, null, routeAction), null, null, routeAction))); @@ -155,7 +155,7 @@ public IHttpActionResult PostResource(string pluginId, string routeResource) { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiPost(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, null, null), routeResource, null, null))); @@ -172,7 +172,7 @@ public IHttpActionResult PostResourceAction(string pluginId, string routeResourc { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiPost(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, null, routeAction), routeResource, null, routeAction))); @@ -189,7 +189,7 @@ public IHttpActionResult PostResourceId(string pluginId, string routeResource, s { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiPost(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, routeId, null), routeResource, routeId, null))); @@ -206,7 +206,7 @@ public IHttpActionResult PostResourceIdAction(string pluginId, string routeResou { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiPost(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, routeId, routeAction), routeResource, routeId, routeAction))); @@ -223,7 +223,7 @@ public IHttpActionResult Put(string pluginId) { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiPut(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(null, null, null), null, null, null))); @@ -240,7 +240,7 @@ public IHttpActionResult PutAction(string pluginId, string routeAction) { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiPut(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(null, null, routeAction), null, null, routeAction))); @@ -257,7 +257,7 @@ public IHttpActionResult PutResource(string pluginId, string routeResource) { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiPut(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, null, null), routeResource, null, null))); @@ -274,7 +274,7 @@ public IHttpActionResult PutResourceAction(string pluginId, string routeResource { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiPut(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, null, routeAction), routeResource, null, routeAction))); @@ -291,7 +291,7 @@ public IHttpActionResult PutResourceId(string pluginId, string routeResource, st { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiPut(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, routeId, null), routeResource, routeId, null))); @@ -308,7 +308,7 @@ public IHttpActionResult PutResourceIdAction(string pluginId, string routeResour { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiPut(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, routeId, routeAction), routeResource, routeId, routeAction))); @@ -325,7 +325,7 @@ public IHttpActionResult Delete(string pluginId) { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiDelete(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(null, null, null), null, null, null))); @@ -342,7 +342,7 @@ public IHttpActionResult DeleteAction(string pluginId, string routeAction) { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiDelete(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(null, null, routeAction), null, null, routeAction))); @@ -359,7 +359,7 @@ public IHttpActionResult DeleteResource(string pluginId, string routeResource) { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiDelete(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, null, null), routeResource, null, null))); @@ -376,7 +376,7 @@ public IHttpActionResult DeleteResourceAction(string pluginId, string routeResou { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiDelete(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, null, routeAction), routeResource, null, routeAction))); @@ -393,7 +393,7 @@ public IHttpActionResult DeleteResourceId(string pluginId, string routeResource, { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiDelete(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, routeId, null), routeResource, routeId, null))); @@ -410,7 +410,7 @@ public IHttpActionResult DeleteResourceIdAction(string pluginId, string routeRes { try { - var request = new RequestImpl(pluginId); + var request = new RequestImpl(); var service = PluginManager.GetService(pluginId); return GetHttpActionResult(service.OnRestApiDelete(new RestApiEventArgs(request, ApiRoutePlugin.GetRoute(routeResource, routeId, routeAction), routeResource, routeId, routeAction))); diff --git a/SiteServer.Web/Controllers/V1/AdministratorsController.cs b/SiteServer.Web/Controllers/V1/AdministratorsController.cs index d3689efa5..c00c74751 100644 --- a/SiteServer.Web/Controllers/V1/AdministratorsController.cs +++ b/SiteServer.Web/Controllers/V1/AdministratorsController.cs @@ -4,7 +4,6 @@ using SiteServer.CMS.Core; using SiteServer.CMS.DataCache; using SiteServer.CMS.Model; -using SiteServer.CMS.Plugin; using SiteServer.CMS.Plugin.Impl; namespace SiteServer.API.Controllers.V1 @@ -24,8 +23,9 @@ public IHttpActionResult Create([FromBody] AdministratorInfoCreateUpdate adminIn { try { - var oRequest = new ORequest(AccessTokenManager.ScopeAdministrators); - if (!oRequest.IsApiAuthorized) return Unauthorized(); + var request = new RequestImpl(); + var isApiAuthorized = request.IsApiAuthenticated && AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeAdministrators); + if (!isApiAuthorized) return Unauthorized(); var retval = DataProvider.AdministratorDao.ApiInsert(adminInfo, out var errorMessage); if (retval == null) @@ -33,7 +33,10 @@ public IHttpActionResult Create([FromBody] AdministratorInfoCreateUpdate adminIn return BadRequest(errorMessage); } - return Ok(new OResponse(retval)); + return Ok(new + { + Value = retval + }); } catch (Exception ex) { @@ -47,8 +50,9 @@ public IHttpActionResult Update(int id, [FromBody] AdministratorInfoCreateUpdate { try { - var oRequest = new ORequest(AccessTokenManager.ScopeAdministrators); - if (!oRequest.IsApiAuthorized) return Unauthorized(); + var request = new RequestImpl(); + var isApiAuthorized = request.IsApiAuthenticated && AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeAdministrators); + if (!isApiAuthorized) return Unauthorized(); if (adminInfo == null) return BadRequest("Could not read administrator from body"); @@ -60,7 +64,10 @@ public IHttpActionResult Update(int id, [FromBody] AdministratorInfoCreateUpdate return BadRequest(errorMessage); } - return Ok(new OResponse(retval)); + return Ok(new + { + Value = retval + }); } catch (Exception ex) { @@ -74,14 +81,18 @@ public IHttpActionResult Delete(int id) { try { - var oRequest = new ORequest(AccessTokenManager.ScopeAdministrators); - if (!oRequest.IsApiAuthorized) return Unauthorized(); + var request = new RequestImpl(); + var isApiAuthorized = request.IsApiAuthenticated && AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeAdministrators); + if (!isApiAuthorized) return Unauthorized(); if (!DataProvider.AdministratorDao.ApiIsExists(id)) return NotFound(); var adminInfo = DataProvider.AdministratorDao.ApiDelete(id); - return Ok(new OResponse(adminInfo)); + return Ok(new + { + Value = adminInfo + }); } catch (Exception ex) { @@ -95,14 +106,18 @@ public IHttpActionResult Get(int id) { try { - var oRequest = new ORequest(AccessTokenManager.ScopeAdministrators); - if (!oRequest.IsApiAuthorized) return Unauthorized(); + var request = new RequestImpl(); + var isApiAuthorized = request.IsApiAuthenticated && AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeAdministrators); + if (!isApiAuthorized) return Unauthorized(); if (!DataProvider.AdministratorDao.ApiIsExists(id)) return NotFound(); var adminInfo = DataProvider.AdministratorDao.ApiGetAdministrator(id); - return Ok(new OResponse(adminInfo)); + return Ok(new + { + Value = adminInfo + }); } catch (Exception ex) { @@ -116,13 +131,17 @@ public IHttpActionResult List() { try { - var oRequest = new ORequest(AccessTokenManager.ScopeAdministrators); - if (!oRequest.IsApiAuthorized) return Unauthorized(); + var request = new RequestImpl(); + var isApiAuthorized = request.IsApiAuthenticated && AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeAdministrators); + if (!isApiAuthorized) return Unauthorized(); + + var top = request.GetQueryInt("top", 20); + var skip = request.GetQueryInt("skip"); - var administrators = DataProvider.AdministratorDao.ApiGetAdministrators(oRequest.Skip, oRequest.Top); + var administrators = DataProvider.AdministratorDao.ApiGetAdministrators(skip, top); var count = DataProvider.AdministratorDao.ApiGetCount(); - return Ok(new OResponse(oRequest, administrators) { Count = count }); + return Ok(new OResponse(administrators, top, skip, request.HttpRequest.Url.AbsoluteUri) { Count = count }); } catch (Exception ex) { @@ -179,9 +198,13 @@ public IHttpActionResult Logout() try { var request = new RequestImpl(); - var response = new OResponse(request.IsAdminLoggin ? request.AdminInfo : null); + var adminInfo = request.IsAdminLoggin ? request.AdminInfo : null; request.AdminLogout(); - return Ok(response); + + return Ok(new + { + Value = adminInfo + }); } catch (Exception ex) { @@ -195,12 +218,13 @@ public IHttpActionResult ResetPassword() { try { - var oRequest = new ORequest(AccessTokenManager.ScopeAdministrators); - if (!oRequest.IsApiAuthorized) return Unauthorized(); + var request = new RequestImpl(); + var isApiAuthorized = request.IsApiAuthenticated && AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeAdministrators); + if (!isApiAuthorized) return Unauthorized(); - var account = oRequest.GetPostString("account"); - var password = oRequest.GetPostString("password"); - var newPassword = oRequest.GetPostString("newPassword"); + var account = request.GetPostString("account"); + var password = request.GetPostString("password"); + var newPassword = request.GetPostString("newPassword"); if (!DataProvider.AdministratorDao.Validate(account, password, true, out var userName, out var errorMessage)) { @@ -214,7 +238,10 @@ public IHttpActionResult ResetPassword() return BadRequest(errorMessage); } - return Ok(new OResponse(adminInfo)); + return Ok(new + { + Value = adminInfo + }); } catch (Exception ex) { diff --git a/SiteServer.Web/Controllers/V1/CaptchaController.cs b/SiteServer.Web/Controllers/V1/CaptchaController.cs index 09bc45d19..c7f715999 100644 --- a/SiteServer.Web/Controllers/V1/CaptchaController.cs +++ b/SiteServer.Web/Controllers/V1/CaptchaController.cs @@ -1,12 +1,10 @@ using System; -using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Web; using System.Web.Http; using SiteServer.BackgroundPages.Core; -using SiteServer.CMS.Api.V1; using SiteServer.CMS.Core; using SiteServer.Utils; @@ -101,7 +99,10 @@ public IHttpActionResult Check(string name, [FromBody] CaptchaInfo captchaInfo) return BadRequest("验证码不正确,请重新输入!"); } - return Ok(new OResponse(true)); + return Ok(new + { + Value = true + }); } catch (Exception ex) { diff --git a/SiteServer.Web/Controllers/V1/ContentsController.cs b/SiteServer.Web/Controllers/V1/ContentsController.cs index 0b6b4ec8b..b4a9de9ae 100644 --- a/SiteServer.Web/Controllers/V1/ContentsController.cs +++ b/SiteServer.Web/Controllers/V1/ContentsController.cs @@ -113,7 +113,10 @@ public IHttpActionResult Create(int siteId, int channelId) request.AddSiteLog(siteId, channelId, contentInfo.Id, "添加内容", $"栏目:{ChannelManager.GetChannelNameNavigation(siteId, contentInfo.ChannelId)},内容标题:{contentInfo.Title}"); - return Ok(new OResponse(contentInfo.ToDictionary())); + return Ok(new + { + Value = contentInfo + }); } catch (Exception ex) { @@ -155,7 +158,6 @@ public IHttpActionResult Update(int siteId, int channelId, int id) var attributes = request.GetPostObject>(); if (attributes == null) return BadRequest("无法从body中获取内容实体"); - var adminName = request.AdminName; @@ -211,7 +213,10 @@ public IHttpActionResult Update(int siteId, int channelId, int id) request.AddSiteLog(siteId, channelId, contentInfo.Id, "修改内容", $"栏目:{ChannelManager.GetChannelNameNavigation(siteId, contentInfo.ChannelId)},内容标题:{contentInfo.Title}"); - return Ok(new OResponse(contentInfo.ToDictionary())); + return Ok(new + { + Value = contentInfo + }); } catch (Exception ex) { @@ -225,9 +230,25 @@ public IHttpActionResult Delete(int siteId, int channelId, int id) { try { - var request = new RequestImpl(AccessTokenManager.ScopeContents); - if (request.IsApiAuthenticated && !request.IsApiAuthorized) return Unauthorized(); - if (!request.IsAdminLoggin) return Unauthorized(); + var request = new RequestImpl(); + var sourceId = request.GetPostInt(ContentAttribute.SourceId.ToCamelCase()); + bool isAuth; + if (sourceId == SourceManager.User) + { + isAuth = request.IsUserLoggin && request.UserPermissions.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentDelete); + } + else + { + isAuth = request.IsApiAuthenticated && + AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeContents) || + request.IsUserLoggin && + request.UserPermissions.HasChannelPermissions(siteId, channelId, + ConfigManager.ChannelPermissions.ContentDelete) || + request.IsAdminLoggin && + request.AdminPermissions.HasChannelPermissions(siteId, channelId, + ConfigManager.ChannelPermissions.ContentDelete); + } + if (!isAuth) return Unauthorized(); var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) return BadRequest("无法确定内容对应的站点"); @@ -245,7 +266,10 @@ public IHttpActionResult Delete(int siteId, int channelId, int id) DataProvider.ContentDao.DeleteContent(tableName, siteInfo, channelId, id); - return Ok(new OResponse(contentInfo.ToDictionary())); + return Ok(new + { + Value = contentInfo + }); } catch (Exception ex) { @@ -259,9 +283,25 @@ public IHttpActionResult Get(int siteId, int channelId, int id) { try { - var request = new RequestImpl(AccessTokenManager.ScopeContents); - if (request.IsApiAuthenticated && !request.IsApiAuthorized) return Unauthorized(); - if (!request.IsAdminLoggin) return Unauthorized(); + var request = new RequestImpl(); + var sourceId = request.GetPostInt(ContentAttribute.SourceId.ToCamelCase()); + bool isAuth; + if (sourceId == SourceManager.User) + { + isAuth = request.IsUserLoggin && request.UserPermissions.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentView); + } + else + { + isAuth = request.IsApiAuthenticated && + AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeContents) || + request.IsUserLoggin && + request.UserPermissions.HasChannelPermissions(siteId, channelId, + ConfigManager.ChannelPermissions.ContentView) || + request.IsAdminLoggin && + request.AdminPermissions.HasChannelPermissions(siteId, channelId, + ConfigManager.ChannelPermissions.ContentView); + } + if (!isAuth) return Unauthorized(); var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) return BadRequest("无法确定内容对应的站点"); @@ -275,7 +315,10 @@ public IHttpActionResult Get(int siteId, int channelId, int id) var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, id); if (contentInfo == null) return NotFound(); - return Ok(new OResponse(contentInfo.ToDictionary())); + return Ok(new + { + Value = contentInfo + }); } catch (Exception ex) { @@ -289,9 +332,25 @@ public IHttpActionResult GetSiteContents(int siteId) { try { - var request = new ORequest(AccessTokenManager.ScopeContents); - if (request.IsApiAuthenticated && !request.IsApiAuthorized) return Unauthorized(); - if (!request.IsAdminLoggin) return Unauthorized(); + var request = new RequestImpl(); + var sourceId = request.GetPostInt(ContentAttribute.SourceId.ToCamelCase()); + bool isAuth; + if (sourceId == SourceManager.User) + { + isAuth = request.IsUserLoggin && request.UserPermissions.HasChannelPermissions(siteId, siteId, ConfigManager.ChannelPermissions.ContentView); + } + else + { + isAuth = request.IsApiAuthenticated && + AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeContents) || + request.IsUserLoggin && + request.UserPermissions.HasChannelPermissions(siteId, siteId, + ConfigManager.ChannelPermissions.ContentView) || + request.IsAdminLoggin && + request.AdminPermissions.HasChannelPermissions(siteId, siteId, + ConfigManager.ChannelPermissions.ContentView); + } + if (!isAuth) return Unauthorized(); var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) return BadRequest("无法确定内容对应的站点"); @@ -301,7 +360,12 @@ public IHttpActionResult GetSiteContents(int siteId) var tableName = siteInfo.TableName; - var contentIdList = DataProvider.ContentDao.ApiGetContentIdListBySiteId(tableName, siteId, request.Top, request.Skip, request.Like, request.OrderBy, request.QueryString, out var count); + var top = request.GetQueryInt("top", 20); + var skip = request.GetQueryInt("skip"); + var like = request.GetQueryString("like"); + var orderBy = request.GetQueryString("orderBy"); + + var contentIdList = DataProvider.ContentDao.ApiGetContentIdListBySiteId(tableName, siteId, top, skip, like, orderBy, request.QueryString, out var count); var value = new List>(); foreach (var tuple in contentIdList) { @@ -312,7 +376,7 @@ public IHttpActionResult GetSiteContents(int siteId) } } - return Ok(new OResponse(request, value) {Count = count}); + return Ok(new OResponse(value, top, skip, request.HttpRequest.Url.AbsoluteUri) {Count = count}); } catch (Exception ex) { @@ -326,9 +390,25 @@ public IHttpActionResult GetChannelContents(int siteId, int channelId) { try { - var request = new ORequest(AccessTokenManager.ScopeContents); - if (request.IsApiAuthenticated && !request.IsApiAuthorized) return Unauthorized(); - if (!request.IsAdminLoggin) return Unauthorized(); + var request = new RequestImpl(); + var sourceId = request.GetPostInt(ContentAttribute.SourceId.ToCamelCase()); + bool isAuth; + if (sourceId == SourceManager.User) + { + isAuth = request.IsUserLoggin && request.UserPermissions.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentView); + } + else + { + isAuth = request.IsApiAuthenticated && + AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeContents) || + request.IsUserLoggin && + request.UserPermissions.HasChannelPermissions(siteId, channelId, + ConfigManager.ChannelPermissions.ContentView) || + request.IsAdminLoggin && + request.AdminPermissions.HasChannelPermissions(siteId, channelId, + ConfigManager.ChannelPermissions.ContentView); + } + if (!isAuth) return Unauthorized(); var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) return BadRequest("无法确定内容对应的站点"); @@ -341,8 +421,13 @@ public IHttpActionResult GetChannelContents(int siteId, int channelId) var tableName = ChannelManager.GetTableName(siteInfo, channelInfo); + var top = request.GetQueryInt("top", 20); + var skip = request.GetQueryInt("skip"); + var like = request.GetQueryString("like"); + var orderBy = request.GetQueryString("orderBy"); + int count; - var contentIdList = DataProvider.ContentDao.ApiGetContentIdListByChannelId(tableName, siteId, channelId, request.Top, request.Skip, request.Like, request.OrderBy, request.QueryString, out count); + var contentIdList = DataProvider.ContentDao.ApiGetContentIdListByChannelId(tableName, siteId, channelId, top, skip, like, orderBy, request.QueryString, out count); var value = new List>(); foreach(var contentId in contentIdList) { @@ -353,7 +438,7 @@ public IHttpActionResult GetChannelContents(int siteId, int channelId) } } - return Ok(new OResponse(request, value) { Count = count }); + return Ok(new OResponse(value, top, skip, request.HttpRequest.Url.AbsoluteUri) { Count = count }); } catch (Exception ex) { diff --git a/SiteServer.Web/Controllers/V1/StlController.cs b/SiteServer.Web/Controllers/V1/StlController.cs index 839f745b8..9b148f2d9 100644 --- a/SiteServer.Web/Controllers/V1/StlController.cs +++ b/SiteServer.Web/Controllers/V1/StlController.cs @@ -53,7 +53,10 @@ public IHttpActionResult Get(string elementName) } } - return Ok(new OResponse(value)); + return Ok(new + { + Value = value + }); } catch (Exception ex) { diff --git a/SiteServer.Web/Controllers/V1/UsersController.cs b/SiteServer.Web/Controllers/V1/UsersController.cs index a0aead0ba..f8199ea00 100644 --- a/SiteServer.Web/Controllers/V1/UsersController.cs +++ b/SiteServer.Web/Controllers/V1/UsersController.cs @@ -29,7 +29,7 @@ public IHttpActionResult Create() { try { - var request = new RequestImpl(AccessTokenManager.ScopeUsers); + var request = new RequestImpl(); var userInfo = new UserInfo(request.GetPostObject>()); if (!ConfigManager.SystemConfigInfo.IsUserRegistrationGroup) { @@ -43,7 +43,10 @@ public IHttpActionResult Create() return BadRequest(errorMessage); } - return Ok(new OResponse(UserManager.GetUserInfoByUserId(userId))); + return Ok(new + { + Value = UserManager.GetUserInfoByUserId(userId) + }); } catch (Exception ex) { @@ -57,8 +60,14 @@ public IHttpActionResult Update(int id) { try { - var request = new RequestImpl(AccessTokenManager.ScopeUsers); - if (!request.IsUserAuthorized(id)) return Unauthorized(); + var request = new RequestImpl(); + 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>(); @@ -73,7 +82,10 @@ public IHttpActionResult Update(int id) return BadRequest(errorMessage); } - return Ok(new OResponse(retval)); + return Ok(new + { + Value = retval + }); } catch (Exception ex) { @@ -87,8 +99,14 @@ public IHttpActionResult Delete(int id) { try { - var request = new RequestImpl(AccessTokenManager.ScopeUsers); - if (!request.IsUserAuthorized(id)) return Unauthorized(); + var request = new RequestImpl(); + 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 userInfo = UserManager.GetUserInfoByUserId(id); if (userInfo == null) return NotFound(); @@ -96,7 +114,10 @@ public IHttpActionResult Delete(int id) request.UserLogout(); DataProvider.UserDao.Delete(userInfo); - return Ok(new OResponse(userInfo)); + return Ok(new + { + Value = userInfo + }); } catch (Exception ex) { @@ -110,14 +131,23 @@ public IHttpActionResult Get(int id) { try { - var request = new RequestImpl(AccessTokenManager.ScopeUsers); - if (!request.IsUserAuthorized(id)) return Unauthorized(); + var request = new RequestImpl(); + 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(); if (!DataProvider.UserDao.IsExists(id)) return NotFound(); var user = UserManager.GetUserInfoByUserId(id); - return Ok(new OResponse(user)); + return Ok(new + { + Value = user + }); } catch (Exception ex) { @@ -134,7 +164,10 @@ public IHttpActionResult GetAvatar(int id) var avatarUrl = !string.IsNullOrEmpty(userInfo?.AvatarUrl) ? userInfo.AvatarUrl : UserManager.DefaultAvatarUrl; avatarUrl = PageUtils.AddProtocolToUrl(avatarUrl); - return Ok(new OResponse(avatarUrl)); + return Ok(new + { + Value = avatarUrl + }); } [HttpPost, Route(RouteUserAvatar)] @@ -142,8 +175,14 @@ public IHttpActionResult UploadAvatar(int id) { try { - var request = new RequestImpl(AccessTokenManager.ScopeUsers); - if (!request.IsUserAuthorized(id)) return Unauthorized(); + var request = new RequestImpl(); + 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 userInfo = UserManager.GetUserInfoByUserId(id); if (userInfo == null) return NotFound(); @@ -173,9 +212,10 @@ public IHttpActionResult UploadAvatar(int id) DataProvider.UserDao.Update(userInfo); } - var oResponse = new OResponse(userInfo); - - return Ok(oResponse); + return Ok(new + { + Value = userInfo + }); } catch (Exception ex) { @@ -189,13 +229,20 @@ public IHttpActionResult List() { try { - var request = new ORequest(AccessTokenManager.ScopeUsers); - if (!request.IsApiAuthorized) return Unauthorized(); + var request = new RequestImpl(); + var isAuth = request.IsApiAuthenticated && + AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeUsers) || + request.IsAdminLoggin && + request.AdminPermissions.HasSystemPermissions(ConfigManager.SettingsPermissions.User); + if (!isAuth) return Unauthorized(); - var users = DataProvider.UserDao.GetUsers(request.Skip, request.Top); + var top = request.GetQueryInt("top", 20); + var skip = request.GetQueryInt("skip"); + + var users = DataProvider.UserDao.GetUsers(skip, top); var count = DataProvider.UserDao.GetCount(); - return Ok(new OResponse(request, users) { Count = count }); + return Ok(new OResponse(users, top, skip, request.HttpRequest.Url.AbsoluteUri) { Count = count }); } catch (Exception ex) { @@ -250,9 +297,13 @@ public IHttpActionResult Logout() try { var request = new RequestImpl(); - var response = new OResponse(request.IsUserLoggin ? request.UserInfo : null); + var userInfo = request.IsUserLoggin ? request.UserInfo : null; request.UserLogout(); - return Ok(response); + + return Ok(new + { + Value = userInfo + }); } catch (Exception ex) { @@ -266,15 +317,24 @@ public IHttpActionResult CreateLog(int id, [FromBody] UserLogInfo logInfo) { try { - var oRequest = new ORequest(AccessTokenManager.ScopeUsers); - if (!oRequest.IsApiAuthorized) return Unauthorized(); + var request = new RequestImpl(); + 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 userInfo = UserManager.GetUserInfoByUserId(id); if (userInfo == null) return NotFound(); var retval = DataProvider.UserLogDao.ApiInsert(userInfo.UserName, logInfo); - return Ok(new OResponse(retval)); + return Ok(new + { + Value = retval + }); } catch (Exception ex) { @@ -288,15 +348,24 @@ public IHttpActionResult GetLogs(int id) { try { - var oRequest = new ORequest(AccessTokenManager.ScopeUsers); - if (!oRequest.IsApiAuthorized) return Unauthorized(); + var request = new RequestImpl(); + 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 userInfo = UserManager.GetUserInfoByUserId(id); if (userInfo == null) return NotFound(); - var logs = DataProvider.UserLogDao.ApiGetLogs(userInfo.UserName, oRequest.Skip, oRequest.Top); + var top = request.GetQueryInt("top", 20); + var skip = request.GetQueryInt("skip"); - return Ok(new OResponse(oRequest, logs) { Count = DataProvider.UserDao.GetCount() }); + var logs = DataProvider.UserLogDao.ApiGetLogs(userInfo.UserName, skip, top); + + return Ok(new OResponse(logs, top, skip, request.HttpRequest.Url.AbsoluteUri) { Count = DataProvider.UserDao.GetCount() }); } catch (Exception ex) { @@ -310,8 +379,14 @@ public IHttpActionResult ResetPassword(int id) { try { - var request = new RequestImpl(AccessTokenManager.ScopeUsers); - if (!request.IsUserAuthorized(id)) return Unauthorized(); + var request = new RequestImpl(); + 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 userInfo = UserManager.GetUserInfoByUserId(id); if (userInfo == null) return NotFound(); @@ -328,8 +403,11 @@ public IHttpActionResult ResetPassword(int id) { return BadRequest(errorMessage); } - - return Ok(new OResponse(userInfo)); + + return Ok(new + { + Value = userInfo + }); } catch (Exception ex) { diff --git a/SiteServer.Web/SiteServer.API.csproj b/SiteServer.Web/SiteServer.API.csproj index 4971bcff6..44735fb04 100644 --- a/SiteServer.Web/SiteServer.API.csproj +++ b/SiteServer.Web/SiteServer.API.csproj @@ -63,8 +63,8 @@ ..\packages\Owin.1.0\lib\net40\Owin.dll - - ..\packages\SiteServer.Plugin.2.0.16\lib\net45\SiteServer.Plugin.dll + + ..\packages\SiteServer.Plugin.2.0.17\lib\net45\SiteServer.Plugin.dll diff --git a/SiteServer.Web/packages.config b/SiteServer.Web/packages.config index adcc14dfc..6ade2786e 100644 --- a/SiteServer.Web/packages.config +++ b/SiteServer.Web/packages.config @@ -15,5 +15,5 @@ - + \ No newline at end of file