From f163b1becf758cb7909b2caeef91d0c1b7559184 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Fri, 13 Mar 2020 15:32:26 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E9=AB=98?= =?UTF-8?q?=E4=BB=BF=E7=A0=81=E4=BA=91=E7=99=BB=E5=BD=95=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/AccountController.cs | 5 +- .../Views/Account/Login1.cshtml | 292 ++++++++++++++++++ .../Bootstrap.Admin/wwwroot/css/login1.css | 178 +++++++++++ .../Bootstrap.Admin/wwwroot/html/login1.html | 163 ++++++++++ .../Bootstrap.Admin/wwwroot/images/left-1.png | Bin 0 -> 10559 bytes .../Bootstrap.Admin/wwwroot/images/left-2.png | Bin 0 -> 9646 bytes .../wwwroot/lib/longbow/longbow.common.js | 1 + .../Bootstrap.Admin/Controllers/LoginTest.cs | 4 +- 8 files changed, 639 insertions(+), 4 deletions(-) create mode 100644 src/admin/Bootstrap.Admin/Views/Account/Login1.cshtml create mode 100644 src/admin/Bootstrap.Admin/wwwroot/css/login1.css create mode 100644 src/admin/Bootstrap.Admin/wwwroot/html/login1.html create mode 100644 src/admin/Bootstrap.Admin/wwwroot/images/left-1.png create mode 100644 src/admin/Bootstrap.Admin/wwwroot/images/left-2.png diff --git a/src/admin/Bootstrap.Admin/Controllers/AccountController.cs b/src/admin/Bootstrap.Admin/Controllers/AccountController.cs index 739c784f..3a63eeca 100644 --- a/src/admin/Bootstrap.Admin/Controllers/AccountController.cs +++ b/src/admin/Bootstrap.Admin/Controllers/AccountController.cs @@ -74,16 +74,17 @@ namespace Bootstrap.Admin.Controllers /// 系统登录方法 /// /// + /// /// [HttpGet] - public ActionResult Login([FromQuery]string? appId = null) + public ActionResult Login([FromQuery]string? appId = null, [FromQuery]string? view = "Login") { if (DictHelper.RetrieveSystemModel()) { ViewBag.UserName = "Admin"; ViewBag.Password = "123789"; } - return User.Identity.IsAuthenticated ? (ActionResult)Redirect("~/Home/Index") : View("Login", new LoginModel(appId)); + return User.Identity.IsAuthenticated ? (ActionResult)Redirect("~/Home/Index") : View(view, new LoginModel(appId)); } /// diff --git a/src/admin/Bootstrap.Admin/Views/Account/Login1.cshtml b/src/admin/Bootstrap.Admin/Views/Account/Login1.cshtml new file mode 100644 index 00000000..d792b230 --- /dev/null +++ b/src/admin/Bootstrap.Admin/Views/Account/Login1.cshtml @@ -0,0 +1,292 @@ +@model LoginModel +@{ + ViewBag.Title = Model.Title; + Layout = "_Layout"; +} +@section css { + + + + + + + + + + + +} +@section javascript { + + + + + + + + + + + + + + +} +
+ +
+ + diff --git a/src/admin/Bootstrap.Admin/wwwroot/css/login1.css b/src/admin/Bootstrap.Admin/wwwroot/css/login1.css new file mode 100644 index 00000000..60934b63 --- /dev/null +++ b/src/admin/Bootstrap.Admin/wwwroot/css/login1.css @@ -0,0 +1,178 @@ +body { + -webkit-font-smoothing: antialiased; +} + +.form-control:focus { + border-color: #66afe9; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102,175,233,.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102,175,233,.6); +} + +.login-wrap .rememberPwd i { + width: 13px; +} + +.login-wrap .rememberPwd { + cursor: pointer; + margin-left: 2px; +} + +.container-fluid { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + display: flex; + align-items: center; + justify-content: center; + min-width: 1000px; +} + +.login-container { + min-height: 500px; + box-shadow: 0px 20px 80px 0px rgba(0,0,0,0.3); + display: flex; + width: 1000px; +} + + .login-container section { + width: 50%; + } + + .login-container .login-sidebox { + position: relative; + background: -webkit-gradient(linear, left bottom, left top, from(#3a485a), to(#607089)); + background: linear-gradient(0deg, #3a485a 0%, #607089 100%); + color: #fff; + } + + .login-container .login-sidebox::before, .login-container .login-sidebox::after { + content: ''; + top: 0; + right: 0; + bottom: 0; + left: 0; + position: absolute; + } + + .login-container .login-sidebox::before { + background: url(../images/left-1.png) no-repeat 0 0; + } + + .login-container .login-sidebox::after { + background: url(../images/left-2.png) no-repeat right bottom; + } + + .login-container .login-sidebox .login-sidebox-content { + padding: 80px 80px 48px; + position: relative; + z-index: 1; + } + + .login-sidebox-header { + margin-bottom: 40px; + } + + .login-sidebox-logo { + display: flex; + align-items: center; + margin-bottom: 14px; + } + + .login-sidebox-logo img { + width: 48px; + height: auto; + border-radius: 50%; + margin-right: 14px; + } + + .login-sidebox-logo span { + display: inline; + font-size: 1.5rem; + font-weight: 700; + } + + .login-sidebox-subtitle { + font-size: 20pt; + font-weight: normal; + } + + .login-sidebox-footer { + margin-top: 40px; + border-top: solid 1px #ddd; + padding-top: 28px; + font-size: 0.875rem; + font-weight: 500; + } + + .login-sidebox-footer a { + cursor: pointer; + color: #fff; + } + + .login-form { + padding: 64px; + font-size: 0.875rem; + } + +.login-form-header { + display: flex; + justify-content: space-between; + align-items: flex-end; + margin-bottom: 20px; +} + +.login-form-header h2 { + margin-bottom: 0; + font-size: 1.714rem; +} + +.login-other { + display: table; + text-align: center; + white-space: nowrap; + margin: 0.25rem 0 0.625rem 0; +} + + .login-other:before, .login-other:after { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC"); + content: ''; + display: table-cell; + position: relative; + top: 50%; + width: 50%; + background-repeat: no-repeat; + } + + .login-other:before { + background-position: right 1em top 50%; + } + + .login-other:after { + background-position: left 1em top 50%; + } + +.login-list { + display: flex; + justify-content: space-between; +} + + .login-list .item { + width: 32px; + height: 32px; + } + +.btn-login { + color: #fff; + background: #fe7300; +} + +.btn-login:hover { + background: #f38d30; + color: #fff; +} + +.forget-password { + padding: 16px 0; +} \ No newline at end of file diff --git a/src/admin/Bootstrap.Admin/wwwroot/html/login1.html b/src/admin/Bootstrap.Admin/wwwroot/html/login1.html new file mode 100644 index 00000000..b71c2663 --- /dev/null +++ b/src/admin/Bootstrap.Admin/wwwroot/html/login1.html @@ -0,0 +1,163 @@ + + + + + + + + + + + 健康检查 + + + + + + + + + +
+ +
+ + + + + + + + + + \ No newline at end of file diff --git a/src/admin/Bootstrap.Admin/wwwroot/images/left-1.png b/src/admin/Bootstrap.Admin/wwwroot/images/left-1.png new file mode 100644 index 0000000000000000000000000000000000000000..171999df9b9052b3b62261563765124c38efd2e0 GIT binary patch literal 10559 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 literal 0 HcmV?d00001 diff --git a/src/admin/Bootstrap.Admin/wwwroot/images/left-2.png b/src/admin/Bootstrap.Admin/wwwroot/images/left-2.png new file mode 100644 index 0000000000000000000000000000000000000000..42cc4d26aecdcb64da5d37d940d3aa4a42fb11f3 GIT binary patch literal 9646 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 literal 0 HcmV?d00001 diff --git a/src/admin/Bootstrap.Admin/wwwroot/lib/longbow/longbow.common.js b/src/admin/Bootstrap.Admin/wwwroot/lib/longbow/longbow.common.js index ceceeeca..8661857c 100644 --- a/src/admin/Bootstrap.Admin/wwwroot/lib/longbow/longbow.common.js +++ b/src/admin/Bootstrap.Admin/wwwroot/lib/longbow/longbow.common.js @@ -298,6 +298,7 @@ $.fn.extend({ autoCenter: function (options) { + if (this.length === 0) return; options = $.extend({ top: 0 }, options); var that = this; var defaultVal = parseFloat(that.css('marginTop').replace('px', '')); diff --git a/test/UnitTest/Bootstrap.Admin/Controllers/LoginTest.cs b/test/UnitTest/Bootstrap.Admin/Controllers/LoginTest.cs index d39bbb3a..680756f2 100644 --- a/test/UnitTest/Bootstrap.Admin/Controllers/LoginTest.cs +++ b/test/UnitTest/Bootstrap.Admin/Controllers/LoginTest.cs @@ -29,7 +29,7 @@ namespace Bootstrap.Admin.Controllers var content = await r.Content.ReadAsStringAsync(); Assert.Contains("登 录", content); - r = await client.GetAsync("/Account/Login"); + r = await client.GetAsync("/Account/Login?AppId=BA&View=Login1"); var view = await r.Content.ReadAsStringAsync(); var tokenTag = " Date: Fri, 13 Mar 2020 18:45:37 +0800 Subject: [PATCH 2/4] =?UTF-8?q?db:=20=E5=A2=9E=E5=8A=A0=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=88=9D=E5=A7=8B=E5=8C=96=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/MongoDB/Dicts.js | 18 ++++++++++++++++++ db/MySQL/initData.sql | 6 ++++++ db/Oracle/InitData.sql | 6 ++++++ db/SQLite/InitData.sql | 6 ++++++ db/SqlServer/InitData.sql | 6 ++++++ src/admin/Bootstrap.Admin/BootstrapAdmin.db | Bin 102400 -> 102400 bytes 6 files changed, 42 insertions(+) diff --git a/db/MongoDB/Dicts.js b/db/MongoDB/Dicts.js index 0b4d1cd4..2853f411 100644 --- a/db/MongoDB/Dicts.js +++ b/db/MongoDB/Dicts.js @@ -360,4 +360,22 @@ "Code": "/favicon.png", "Define": NumberInt(1) } + { + "Category": "系统首页", + "Name": "高仿码云", + "Code": "Login-Gitee", + "Define": NumberInt(0) + }, + { + "Category": "系统首页", + "Name": "系统默认", + "Code": "Login", + "Define": NumberInt(0) + }, + { + "Category": "网站设置", + "Name": "登录界面", + "Code": "Login", + "Define": NumberInt(0) + } ]; \ No newline at end of file diff --git a/db/MySQL/initData.sql b/db/MySQL/initData.sql index 1e179238..979c83dc 100644 --- a/db/MySQL/initData.sql +++ b/db/MySQL/initData.sql @@ -77,6 +77,12 @@ INSERT INTO Dicts (Category, Name, Code, Define) VALUES ('网站设置', '默认 INSERT INTO Dicts (Category, Name, Code, Define) VALUES ('网站设置', '后台地址', 'http://localhost:50852', 0); +-- 系统登录首页设置 +INSERT INTO Dicts (Category, Name, Code, Define) VALUES ('系统首页', '高仿码云', 'Login-Gitee', 1); +INSERT INTO Dicts (Category, Name, Code, Define) VALUES ('系统首页', '系统默认', 'Login', 1); + +INSERT INTO Dicts (Category, Name, Code, Define) VALUES ('网站设置', '登录界面', 'Login', 1); + DELETE FROM Navigations Where Category = '0'; INSERT INTO Navigations (ParentId, Name, `Order`, Icon, Url, Category) VALUES (0, '后台管理', 10, 'fa fa-gear', '~/Admin/Index', '0'); INSERT INTO Navigations (ParentId, Name, `Order`, Icon, Url, Category) VALUES (0, '个人中心', 20, 'fa fa-suitcase', '~/Admin/Profiles', '0'); diff --git a/db/Oracle/InitData.sql b/db/Oracle/InitData.sql index 1d14392a..14b4bece 100644 --- a/db/Oracle/InitData.sql +++ b/db/Oracle/InitData.sql @@ -76,6 +76,12 @@ INSERT INTO Dicts (Id, Category, Name, Code, Define) Values (SEQ_DICTS_ID.NEXTVA INSERT INTO Dicts (Id, Category, Name, Code, Define) Values (SEQ_DICTS_ID.NEXTVAL, '网站设置', '默认应用程序', '0', 0); INSERT INTO Dicts (Id, Category, Name, Code, Define) Values (SEQ_DICTS_ID.NEXTVAL, '网站设置', '后台地址', 'http://localhost:50852', 0); +-- 系统登录首页设置 +INSERT INTO Dicts (Id, Category, Name, Code, Define) VALUES (SEQ_DICTS_ID.NEXTVAL, '系统首页', '高仿码云', 'Login-Gitee', 1); +INSERT INTO Dicts (Id, Category, Name, Code, Define) VALUES (SEQ_DICTS_ID.NEXTVAL, '系统首页', '系统默认', 'Login', 1); + +INSERT INTO Dicts (Id, Category, Name, Code, Define) VALUES (SEQ_DICTS_ID.NEXTVAL, '网站设置', '登录界面', 'Login', 1); + DELETE FROM Navigations Where Category = '0'; INSERT INTO Navigations (Id, ParentId, Name, "ORDER", Icon, Url, Category) Values (SEQ_NAVIGATIONS_ID.NEXTVAL, 0, '后台管理', 10, 'fa fa-gear', '~/Admin/Index', '0'); INSERT INTO Navigations (Id, ParentId, Name, "ORDER", Icon, Url, Category) Values (SEQ_NAVIGATIONS_ID.NEXTVAL, 0, '个人中心', 20, 'fa fa-suitcase', '~/Admin/Profiles', '0'); diff --git a/db/SQLite/InitData.sql b/db/SQLite/InitData.sql index 34c2d516..2693a851 100644 --- a/db/SQLite/InitData.sql +++ b/db/SQLite/InitData.sql @@ -81,6 +81,12 @@ INSERT INTO [Dicts] ([Category], [Name], [Code], [Define]) VALUES ('网站设置 INSERT INTO [Dicts] ([Category], [Name], [Code], [Define]) VALUES ('网站设置', '后台地址', 'http://localhost:50852', 0); +-- 系统登录首页设置 +INSERT INTO [Dicts] ([Category], [Name], [Code], [Define]) VALUES ('系统首页', '高仿码云', 'Login-Gitee', 1); +INSERT INTO [Dicts] ([Category], [Name], [Code], [Define]) VALUES ('系统首页', '系统默认', 'Login', 1); + +INSERT INTO [Dicts] ([Category], [Name], [Code], [Define]) VALUES ('网站设置', '登录界面', 'Login', 1); + DELETE FROM Navigations Where Category = '0'; INSERT INTO [Navigations] ([ParentId], [Name], [Order], [Icon], [Url], [Category]) VALUES (0, '后台管理', 10, 'fa fa-gear', '~/Admin/Index', '0'); INSERT INTO [Navigations] ([ParentId], [Name], [Order], [Icon], [Url], [Category]) VALUES (0, '个人中心', 20, 'fa fa-suitcase', '~/Admin/Profiles', '0'); diff --git a/db/SqlServer/InitData.sql b/db/SqlServer/InitData.sql index 4de9a43a..7db66186 100644 --- a/db/SqlServer/InitData.sql +++ b/db/SqlServer/InitData.sql @@ -81,6 +81,12 @@ INSERT [dbo].[Dicts] ([Category], [Name], [Code], [Define]) VALUES (N'网站设 INSERT [dbo].[Dicts] ([Category], [Name], [Code], [Define]) VALUES (N'网站设置', N'后台地址', 'http://localhost:50852', 0) +-- 系统登录首页设置 +INSERT INTO Dicts (Category, Name, Code, Define) VALUES (N'系统首页', N'高仿码云', N'Login-Gitee', 1); +INSERT INTO Dicts (Category, Name, Code, Define) VALUES (N'系统首页', N'系统默认', N'Login', 1); + +INSERT INTO Dicts (Category, Name, Code, Define) VALUES (N'网站设置', N'登录界面', N'Login', 1); + DELETE FROM Navigations Where Category = N'0' INSERT [Navigations] ([ParentId], [Name], [Order], [Icon], [Url], [Category]) VALUES (0, N'后台管理', 10, N'fa fa-gear', N'~/Admin/Index', N'0') INSERT [Navigations] ([ParentId], [Name], [Order], [Icon], [Url], [Category]) VALUES (0, N'个人中心', 20, N'fa fa-suitcase', N'~/Admin/Profiles', N'0') diff --git a/src/admin/Bootstrap.Admin/BootstrapAdmin.db b/src/admin/Bootstrap.Admin/BootstrapAdmin.db index d586549c4f509563c8cda54d95ad621c2c6a9229..48864744f0f1acabf9e6bcad675c68c2fd930515 100644 GIT binary patch delta 172 zcmZozz}B#UZGtqT&qNt#MxTudOU^Ufvuv5nexZ_$-Ih0yYBhS-B0&UeLl74<=jO+`RSQ?%K1=5n|D9oJ^$shX)hOUeGXyo zp7CPc60jo8Jdh$~PN)P}(aY5{p6uTLd_m)rT@%5Iblo#cQd8w~K}z{Kp6}gkeD&-u E0P(F Date: Fri, 13 Mar 2020 22:30:14 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20=E7=BD=91=E7=AB=99=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=A2=9E=E5=8A=A0=E7=99=BB=E5=BD=95=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/AccountController.cs | 14 +++++++++++-- .../Bootstrap.Admin/Models/SettingsModel.cs | 14 +++++++++++++ .../{Login1.cshtml => Login-Gitee.cshtml} | 21 ++++++++++++------- .../Views/Admin/Settings.cshtml | 21 +++++++++++++++++++ .../Bootstrap.Admin/wwwroot/js/settings.js | 6 ++++++ src/admin/Bootstrap.DataAccess/Dict.cs | 12 +++++++++++ .../Bootstrap.DataAccess/Helper/DictHelper.cs | 15 ++++++++++++- .../Bootstrap.Admin/Controllers/LoginTest.cs | 2 +- 8 files changed, 93 insertions(+), 12 deletions(-) rename src/admin/Bootstrap.Admin/Views/Account/{Login1.cshtml => Login-Gitee.cshtml} (93%) diff --git a/src/admin/Bootstrap.Admin/Controllers/AccountController.cs b/src/admin/Bootstrap.Admin/Controllers/AccountController.cs index 3a63eeca..3d1888b4 100644 --- a/src/admin/Bootstrap.Admin/Controllers/AccountController.cs +++ b/src/admin/Bootstrap.Admin/Controllers/AccountController.cs @@ -77,14 +77,24 @@ namespace Bootstrap.Admin.Controllers /// /// [HttpGet] - public ActionResult Login([FromQuery]string? appId = null, [FromQuery]string? view = "Login") + public ActionResult Login([FromQuery]string? appId = null, [FromQuery]string view = "") { if (DictHelper.RetrieveSystemModel()) { ViewBag.UserName = "Admin"; ViewBag.Password = "123789"; } - return User.Identity.IsAuthenticated ? (ActionResult)Redirect("~/Home/Index") : View(view, new LoginModel(appId)); + return User.Identity.IsAuthenticated ? (ActionResult)Redirect("~/Home/Index") : LoginView(view, new LoginModel(appId)); + } + + private ViewResult LoginView(string view, LoginModel model) + { + if (string.IsNullOrEmpty(view)) + { + // retrieve login view from db + view = DictHelper.RetrieveLoginView(); + } + return View(view, model); } /// diff --git a/src/admin/Bootstrap.Admin/Models/SettingsModel.cs b/src/admin/Bootstrap.Admin/Models/SettingsModel.cs index 4d164881..af2123d6 100644 --- a/src/admin/Bootstrap.Admin/Models/SettingsModel.cs +++ b/src/admin/Bootstrap.Admin/Models/SettingsModel.cs @@ -32,6 +32,10 @@ namespace Bootstrap.Admin.Models EnableDemo = DictHelper.RetrieveSystemModel(); AdminPathBase = DictHelper.RetrievePathBase(); EnableHealth = DictHelper.RetrieveHealth(); + Logins = DictHelper.RetrieveLogins(); + var view = DictHelper.RetrieveLoginView(); + var viewName = Logins.FirstOrDefault(d => d.Code == view)?.Name ?? "系统默认"; + LoginView = new KeyValuePair(view, viewName); var dicts = DictHelper.RetrieveDicts(); Apps = DictHelper.RetrieveApps().Where(d => !d.Key.Equals("BA", StringComparison.OrdinalIgnoreCase)).Select(k => @@ -115,5 +119,15 @@ namespace Bootstrap.Admin.Models /// 获得/设置 是否开启健康检查 /// public bool EnableHealth { get; set; } + + /// + /// 获得/设置 字典表中登录首页集合 + /// + public IEnumerable Logins { get; set; } + + /// + /// 获得/设置 登录视图名称 默认是 Login + /// + public KeyValuePair LoginView { get; set; } } } diff --git a/src/admin/Bootstrap.Admin/Views/Account/Login1.cshtml b/src/admin/Bootstrap.Admin/Views/Account/Login-Gitee.cshtml similarity index 93% rename from src/admin/Bootstrap.Admin/Views/Account/Login1.cshtml rename to src/admin/Bootstrap.Admin/Views/Account/Login-Gitee.cshtml index d792b230..15f203af 100644 --- a/src/admin/Bootstrap.Admin/Views/Account/Login1.cshtml +++ b/src/admin/Bootstrap.Admin/Views/Account/Login-Gitee.cshtml @@ -33,6 +33,7 @@ }
+ + disabled value="" placeholder="验证码" maxlength="4" data-required-msg="请输入验证码" + data-valid="true" />
+ title="点击发送验证码"> + 发送验证码 +
@@ -114,7 +117,9 @@ + title="不填写密码默认使用 Gitee 认证" type="submit"> + 登 录 + diff --git a/src/admin/Bootstrap.Admin/Views/Admin/Settings.cshtml b/src/admin/Bootstrap.Admin/Views/Admin/Settings.cshtml index d3548662..1079fed4 100644 --- a/src/admin/Bootstrap.Admin/Views/Admin/Settings.cshtml +++ b/src/admin/Bootstrap.Admin/Views/Admin/Settings.cshtml @@ -57,6 +57,27 @@ +
+
+
+
+
+
+
+ + +
+ +
+
+
+
+
diff --git a/src/admin/Bootstrap.Admin/wwwroot/js/settings.js b/src/admin/Bootstrap.Admin/wwwroot/js/settings.js index 16dd4b76..f6a9fbd0 100644 --- a/src/admin/Bootstrap.Admin/wwwroot/js/settings.js +++ b/src/admin/Bootstrap.Admin/wwwroot/js/settings.js @@ -238,6 +238,12 @@ $(function () { } }); break; + case 'saveLoginView': + var logView = $('#loginView').val(); + $.bc({ + url: Settings.url, data: [{ name: 'Login', code: logView }], title: '保存登录界面设置', method: "post" + }); + break; } }); diff --git a/src/admin/Bootstrap.DataAccess/Dict.cs b/src/admin/Bootstrap.DataAccess/Dict.cs index c8f836a3..290c731a 100644 --- a/src/admin/Bootstrap.DataAccess/Dict.cs +++ b/src/admin/Bootstrap.DataAccess/Dict.cs @@ -325,5 +325,17 @@ namespace Bootstrap.DataAccess ///
/// public bool RetrieveHealth() => (DictHelper.RetrieveDicts().FirstOrDefault(d => d.Category == "网站设置" && d.Name == "健康检查" && d.Define == 0)?.Code ?? "0") == "1"; + + /// + /// 获得字典表登录界面数据 + /// + /// + public IEnumerable RetrieveLogins() => DictHelper.RetrieveDicts().Where(d => d.Category == "系统首页" && d.Define == 1); + + /// + /// 获得使用中的登录视图名称 + /// + /// + public string? RetrieveLoginView() => DictHelper.RetrieveDicts().FirstOrDefault(d => d.Category == "网站设置" && d.Name == "登录界面" && d.Define == 1)?.Code; } } diff --git a/src/admin/Bootstrap.DataAccess/Helper/DictHelper.cs b/src/admin/Bootstrap.DataAccess/Helper/DictHelper.cs index 1ce3c93d..b77b21b5 100644 --- a/src/admin/Bootstrap.DataAccess/Helper/DictHelper.cs +++ b/src/admin/Bootstrap.DataAccess/Helper/DictHelper.cs @@ -165,7 +165,8 @@ namespace Bootstrap.DataAccess ["CookiePeriod"] = "Cookie保留时长", ["IPCachePeriod"] = "IP请求缓存时长", ["AppPath"] = "后台地址", - ["EnableHealth"] = "健康检查" + ["EnableHealth"] = "健康检查", + ["Login"] = "登录界面" }; var ret = SaveSettings(items.Where(i => cache.Any(c => c.Key == i.Name)).Select(i => new BootstrapDict() { @@ -391,6 +392,18 @@ namespace Bootstrap.DataAccess /// public static bool RetrieveHealth() => DbContextManager.Create()?.RetrieveHealth() ?? true; + /// + /// 获得登录界面数据 + /// + /// + public static IEnumerable RetrieveLogins() => DbContextManager.Create()?.RetrieveLogins() ?? new BootstrapDict[0]; + + /// + /// 获得使用中的登录视图名称 + /// + /// + public static string RetrieveLoginView() => DbContextManager.Create()?.RetrieveLoginView() ?? "Login"; + /// /// 保存前台应用配置信息 /// diff --git a/test/UnitTest/Bootstrap.Admin/Controllers/LoginTest.cs b/test/UnitTest/Bootstrap.Admin/Controllers/LoginTest.cs index 680756f2..404e1726 100644 --- a/test/UnitTest/Bootstrap.Admin/Controllers/LoginTest.cs +++ b/test/UnitTest/Bootstrap.Admin/Controllers/LoginTest.cs @@ -53,7 +53,7 @@ namespace Bootstrap.Admin.Controllers [Fact] public async void Login_Fail() { - var r = await client.GetAsync("/Account/Login?AppId=BA&View=Login"); + var r = await client.GetAsync("/Account/Login?AppId=BA"); Assert.True(r.IsSuccessStatusCode); var content = await r.Content.ReadAsStringAsync(); Assert.Contains("登 录", content); From 2e08a6b26bc429226937a8641569db503ffbe047 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Fri, 13 Mar 2020 23:15:05 +0800 Subject: [PATCH 4/4] =?UTF-8?q?refactor:=20=E5=A2=9E=E5=8A=A0=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E9=A1=B5=E5=88=87=E6=8D=A2=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Views/Account/Login-Gitee.cshtml | 10 +- .../css/{login1.css => login-gitee.css} | 123 ++++++++++-------- 2 files changed, 80 insertions(+), 53 deletions(-) rename src/admin/Bootstrap.Admin/wwwroot/css/{login1.css => login-gitee.css} (69%) diff --git a/src/admin/Bootstrap.Admin/Views/Account/Login-Gitee.cshtml b/src/admin/Bootstrap.Admin/Views/Account/Login-Gitee.cshtml index 15f203af..cda75d4f 100644 --- a/src/admin/Bootstrap.Admin/Views/Account/Login-Gitee.cshtml +++ b/src/admin/Bootstrap.Admin/Views/Account/Login-Gitee.cshtml @@ -14,7 +14,7 @@ - + } @section javascript { @@ -162,6 +162,14 @@ +