diff --git a/app/Constant/AppConstant.php b/app/Constant/AppConstant.php index c2cd16ca7..ed67d7291 100644 --- a/app/Constant/AppConstant.php +++ b/app/Constant/AppConstant.php @@ -6,6 +6,6 @@ class AppConstant { const APP = 'cms9'; const APP_NAME = 'ModStartCMS9'; - const VERSION = '8.8.0'; + const VERSION = '8.9.0'; } diff --git a/module/Banner/Asset/style/banner.css b/module/Banner/Asset/style/banner.css index f4352832d..a306de427 100644 --- a/module/Banner/Asset/style/banner.css +++ b/module/Banner/Asset/style/banner.css @@ -1 +1 @@ -.ub-banner{width:100%;overflow:hidden;--swiper-navigation-size:20px}.ub-banner.container .swiper-slide .cover{max-width:var(--container-width);margin:0 auto}.ub-banner .swiper-slide{display:block}.ub-banner .swiper-slide .cover{background-repeat:no-repeat;background-size:cover;background-color:transparent;background-position:center;overflow:hidden;display:block;position:relative}.ub-banner .swiper-slide .cover:after{content:'';display:block;margin-top:50%}.ub-banner .swiper-slide.a .cover{display:flex;align-content:center;align-items:center}.ub-banner .swiper-slide.a .cover .content{max-width:var(--container-width);display:block;margin:1.5rem auto;line-height:2em;flex-grow:1;padding:0 2rem}.ub-banner .swiper-slide.a .cover .content.reverse .title{color:#fff}.ub-banner .swiper-slide.a .cover .content.reverse .slogan{color:#fff}.ub-banner .swiper-slide.a .cover .content.reverse .link{border-color:#fff;color:#fff;background:0 0}.ub-banner .swiper-slide.a .cover .content.reverse .text{color:#fff}.ub-banner .swiper-slide.a .cover .content .title{font-size:2rem;font-weight:700;color:var(--color-text);line-height:2rem}.ub-banner .swiper-slide.a .cover .content .slogan{margin-top:1rem;padding:.5rem 0;font-size:1rem;color:var(--color-text)}.ub-banner .swiper-slide.a .cover .content .slogan .line{font-size:1rem}.ub-banner .swiper-slide.a .cover .content .link{padding:0 1rem;display:inline-block;line-height:2rem;border-radius:2rem;background:var(--color-primary);font-size:var(--font-size);color:#fff;border:.1rem solid var(--color-primary);letter-spacing:.1rem;margin-top:1rem}.ub-banner .swiper-slide.a .cover .content .link.sm{font-size:var(--font-size-small);line-height:1.2rem;border-width:1px;letter-spacing:0;padding:0 .5rem;background:#fff;color:var(--color-primary)}.ub-banner .swiper-slide.a .cover .content .text{padding-top:1rem}.ub-banner .swiper-slide.b .cover{display:flex}.ub-banner .swiper-slide.b .cover .content{max-width:var(--container-width);display:flex;flex-grow:1;margin:0 auto}.ub-banner .swiper-slide.b .cover .content .left{flex-shrink:0;width:50%;display:flex;flex-direction:column;justify-content:center;padding-left:2rem;box-sizing:border-box}.ub-banner .swiper-slide.b .cover .content .left .title{font-size:2rem}.ub-banner .swiper-slide.b .cover .content .left .slogan{margin-top:1rem;padding:.5rem 0;font-size:1rem}.ub-banner .swiper-slide.b .cover .content .left .link{margin-top:1rem}.ub-banner .swiper-slide.b .cover .content .left .link .action{padding:0 1rem;display:inline-block;line-height:2rem;border-radius:2rem;background:var(--color-primary);font-size:var(--font-size);color:#fff;border:.1rem solid var(--color-primary);letter-spacing:.1rem;margin-bottom:.5rem}.ub-banner .swiper-slide.b .cover .content .left .link .action.sm{font-size:var(--font-size-small);line-height:1.2rem;border-width:1px;letter-spacing:0;padding:0 .5rem;background:#fff;color:var(--color-primary)}.ub-banner .swiper-slide.b .cover .content .left .text{margin-top:1rem}.ub-banner .swiper-slide.b .cover .content .right{flex-shrink:0;width:50%;display:flex;flex-direction:column;justify-content:center}.ub-banner .swiper-slide.b .cover .content .right .image{background-size:contain;background-repeat:no-repeat;background-position:center;width:80%;margin:0 auto}.ub-banner .swiper-slide.b .cover .content .right .image:after{content:'';display:block;margin-top:100%}.ub-banner .swiper-slide.video .cover .video-player{width:100%;height:100%;object-fit:cover;position:absolute;top:0;left:0}.ub-banner:hover .swiper-button-white{opacity:.5}.ub-banner .swiper-button-white{opacity:0;background:#fff;color:var(--color-text);font-size:10px;width:2.5rem;height:2.5rem;border-radius:50%;margin-top:-1.25rem;transition:opacity .3s ease-in-out}.ub-banner .swiper-pagination-bullet{box-shadow:#666 0 0 .25rem;width:16px;height:4px;border-radius:4px}.ub-banner .swiper-pagination-bullet.swiper-pagination-bullet-active{box-shadow:none}.ub-banner .swiper-pagination .swiper-pagination-bullet-active{background:var(--color-primary)}.ub-banner.ratio-1-1 .swiper-slide .cover:after{margin-top:100%}.ub-banner.ratio-3-2 .swiper-slide .cover:after{margin-top:66.66%}.ub-banner.ratio-4-3 .swiper-slide .cover:after{margin-top:75%}.ub-banner.ratio-2-1 .swiper-slide .cover:after{margin-top:50%}.ub-banner.ratio-1-1 .swiper-slide .cover:after{margin-top:100%}.ub-banner.ratio-3-1 .swiper-slide .cover:after{margin-top:33.33%}.ub-banner.ratio-4-1 .swiper-slide .cover:after{margin-top:25%}.ub-banner.ratio-5-1 .swiper-slide .cover:after{margin-top:20%}.ub-banner.ratio-5-2 .swiper-slide .cover:after{margin-top:40%}.ub-banner.ratio-5-3 .swiper-slide .cover:after{margin-top:60%}.ub-banner.ratio-10-1 .swiper-slide .cover:after{margin-top:10%}@media screen and (max-width:40rem){.ub-banner.m-ratio-1-2 .swiper-slide .cover:after{margin-top:200%}.ub-banner.m-ratio-1-1 .swiper-slide .cover:after{margin-top:100%}.ub-banner.m-ratio-3-2 .swiper-slide .cover:after{margin-top:66.66%}.ub-banner.m-ratio-4-3 .swiper-slide .cover:after{margin-top:75%}.ub-banner.m-ratio-2-1 .swiper-slide .cover:after{margin-top:50%}.ub-banner.m-ratio-1-1 .swiper-slide .cover:after{margin-top:100%}.ub-banner.m-ratio-3-1 .swiper-slide .cover:after{margin-top:33.33%}.ub-banner.m-ratio-4-1 .swiper-slide .cover:after{margin-top:25%}.ub-banner.m-ratio-5-1 .swiper-slide .cover:after{margin-top:20%}.ub-banner.m-ratio-5-2 .swiper-slide .cover:after{margin-top:40%}.ub-banner.m-ratio-5-3 .swiper-slide .cover:after{margin-top:60%}.ub-banner.m-ratio-10-1 .swiper-slide .cover:after{margin-top:10%}.ub-banner .swiper-button-next,.ub-banner .swiper-button-prev{display:none}.ub-banner .swiper-slide.a .cover .content{padding:1rem;text-align:center;position:absolute;top:0;left:0;right:0;border:0;margin:0;height:calc(100% - 50px);display:flex;flex-direction:column;justify-content:center;align-items:center}.ub-banner .swiper-slide.a .cover .content .title{font-size:1.2rem}.ub-banner .swiper-slide.a .cover .content .slogan{padding:.5rem 0}.ub-banner .swiper-slide.a .cover .content .link{line-height:1.5rem;height:1.5rem}.ub-banner .swiper-slide.b .cover .content{flex-direction:column}.ub-banner .swiper-slide.b .cover .content .left{width:100%;height:50%;text-align:center;padding-left:0}.ub-banner .swiper-slide.b .cover .content .right{width:100%;height:50%;margin-top:1rem}} \ No newline at end of file +.ub-banner{width:100%;overflow:hidden;--swiper-navigation-size:20px}.ub-banner.container .swiper-slide .cover{max-width:var(--container-width);margin:0 auto}.ub-banner .swiper-slide{display:block}.ub-banner .swiper-slide .cover{background-repeat:no-repeat;background-size:cover;background-color:transparent;background-position:center;overflow:hidden;display:block;position:relative}.ub-banner .swiper-slide .cover:after{content:'';display:block;margin-top:50%}.ub-banner .swiper-slide.a .cover{display:flex;align-content:center;align-items:center}.ub-banner .swiper-slide.a .cover .content{max-width:var(--container-width);display:block;margin:1.5rem auto;line-height:2em;flex-grow:1;padding:0 2rem}.ub-banner .swiper-slide.a .cover .content.reverse .title{color:#fff}.ub-banner .swiper-slide.a .cover .content.reverse .slogan{color:#fff}.ub-banner .swiper-slide.a .cover .content.reverse .link{border-color:#fff;color:#fff;background:0 0}.ub-banner .swiper-slide.a .cover .content.reverse .text{color:#fff}.ub-banner .swiper-slide.a .cover .content .title{font-size:2rem;font-weight:700;color:var(--color-text);line-height:2rem}.ub-banner .swiper-slide.a .cover .content .slogan{margin-top:1rem;padding:.5rem 0;font-size:1rem;color:var(--color-text)}.ub-banner .swiper-slide.a .cover .content .slogan .line{font-size:1rem}.ub-banner .swiper-slide.a .cover .content .link{padding:0 1rem;display:inline-block;line-height:2rem;border-radius:2rem;background:var(--color-primary);font-size:var(--font-size);color:#fff;border:.1rem solid var(--color-primary);letter-spacing:.1rem;margin-top:1rem}.ub-banner .swiper-slide.a .cover .content .link.sm{font-size:var(--font-size-small);line-height:1.2rem;border-width:1px;letter-spacing:0;padding:0 .5rem;background:#fff;color:var(--color-primary)}.ub-banner .swiper-slide.a .cover .content .text{padding-top:1rem}.ub-banner .swiper-slide.b .cover{display:flex}.ub-banner .swiper-slide.b .cover .content{max-width:var(--container-width);display:flex;flex-grow:1;margin:0 auto}.ub-banner .swiper-slide.b .cover .content .left{flex-shrink:0;width:50%;display:flex;flex-direction:column;justify-content:center;padding-left:2rem;box-sizing:border-box}.ub-banner .swiper-slide.b .cover .content .left .title{font-size:2rem}.ub-banner .swiper-slide.b .cover .content .left .slogan{margin-top:1rem;padding:.5rem 0;font-size:1rem}.ub-banner .swiper-slide.b .cover .content .left .link{margin-top:1rem}.ub-banner .swiper-slide.b .cover .content .left .link .action{padding:0 1rem;display:inline-block;line-height:2rem;border-radius:2rem;background:var(--color-primary);font-size:var(--font-size);color:#fff;border:.1rem solid var(--color-primary);letter-spacing:.1rem;margin-bottom:.5rem}.ub-banner .swiper-slide.b .cover .content .left .link .action.sm{font-size:var(--font-size-small);line-height:1.2rem;border-width:1px;letter-spacing:0;padding:0 .5rem;background:#fff;color:var(--color-primary)}.ub-banner .swiper-slide.b .cover .content .left .text{margin-top:1rem}.ub-banner .swiper-slide.b .cover .content .right{flex-shrink:0;width:50%;display:flex;flex-direction:column;justify-content:center}.ub-banner .swiper-slide.b .cover .content .right .image{background-size:contain;background-repeat:no-repeat;background-position:center;width:80%;margin:0 auto}.ub-banner .swiper-slide.b .cover .content .right .image:after{content:'';display:block;margin-top:100%}.ub-banner .swiper-slide.video .cover .video-player{width:100%;height:100%;object-fit:cover;position:absolute;top:0;left:0}.ub-banner:hover .swiper-button-white{opacity:.5}.ub-banner .swiper-button-white{opacity:0;background:#fff;color:var(--color-text);font-size:10px;width:2.5rem;height:2.5rem;border-radius:50%;margin-top:-1.25rem;transition:opacity .3s ease-in-out}.ub-banner .swiper-pagination-bullet{box-shadow:#666 0 0 .25rem;width:16px;height:4px;border-radius:4px}.ub-banner .swiper-pagination-bullet.swiper-pagination-bullet-active{box-shadow:none}.ub-banner .swiper-pagination .swiper-pagination-bullet-active{background:var(--color-primary)}.ub-banner.ratio-1-1 .swiper-slide .cover:after{margin-top:100%}.ub-banner.ratio-3-2 .swiper-slide .cover:after{margin-top:66.66%}.ub-banner.ratio-4-3 .swiper-slide .cover:after{margin-top:75%}.ub-banner.ratio-2-1 .swiper-slide .cover:after{margin-top:50%}.ub-banner.ratio-1-1 .swiper-slide .cover:after{margin-top:100%}.ub-banner.ratio-3-1 .swiper-slide .cover:after{margin-top:33.33%}.ub-banner.ratio-4-1 .swiper-slide .cover:after{margin-top:25%}.ub-banner.ratio-5-1 .swiper-slide .cover:after{margin-top:20%}.ub-banner.ratio-5-2 .swiper-slide .cover:after{margin-top:40%}.ub-banner.ratio-5-3 .swiper-slide .cover:after{margin-top:60%}.ub-banner.ratio-10-1 .swiper-slide .cover:after{margin-top:10%}@media screen and (max-width:40rem){.ub-banner.m-ratio-1-2 .swiper-slide .cover:after{margin-top:200%}.ub-banner.m-ratio-2-3 .swiper-slide .cover:after{margin-top:150%}.ub-banner.m-ratio-1-1 .swiper-slide .cover:after{margin-top:100%}.ub-banner.m-ratio-3-2 .swiper-slide .cover:after{margin-top:66.66%}.ub-banner.m-ratio-4-3 .swiper-slide .cover:after{margin-top:75%}.ub-banner.m-ratio-2-1 .swiper-slide .cover:after{margin-top:50%}.ub-banner.m-ratio-1-1 .swiper-slide .cover:after{margin-top:100%}.ub-banner.m-ratio-3-1 .swiper-slide .cover:after{margin-top:33.33%}.ub-banner.m-ratio-4-1 .swiper-slide .cover:after{margin-top:25%}.ub-banner.m-ratio-5-1 .swiper-slide .cover:after{margin-top:20%}.ub-banner.m-ratio-5-2 .swiper-slide .cover:after{margin-top:40%}.ub-banner.m-ratio-5-3 .swiper-slide .cover:after{margin-top:60%}.ub-banner.m-ratio-10-1 .swiper-slide .cover:after{margin-top:10%}.ub-banner .swiper-button-next,.ub-banner .swiper-button-prev{display:none}.ub-banner .swiper-slide.a .cover .content{padding:1rem;text-align:center;position:absolute;top:0;left:0;right:0;border:0;margin:0;height:calc(100% - 50px);display:flex;flex-direction:column;justify-content:center;align-items:center}.ub-banner .swiper-slide.a .cover .content .title{font-size:1.2rem}.ub-banner .swiper-slide.a .cover .content .slogan{padding:.5rem 0}.ub-banner .swiper-slide.a .cover .content .link{line-height:1.5rem;height:1.5rem}.ub-banner .swiper-slide.b .cover .content{flex-direction:column}.ub-banner .swiper-slide.b .cover .content .left{width:100%;height:50%;text-align:center;padding-left:0}.ub-banner .swiper-slide.b .cover .content .right{width:100%;height:50%;margin-top:1rem}} \ No newline at end of file diff --git a/module/Member/Admin/Controller/ConfigController.php b/module/Member/Admin/Controller/ConfigController.php index af79fa4b2..777126186 100644 --- a/module/Member/Admin/Controller/ConfigController.php +++ b/module/Member/Admin/Controller/ConfigController.php @@ -135,7 +135,8 @@ public function setting(AdminConfigBuilder $builder) $builder->number('Member_PasswordLengthMin', '密码最小长度') ->defaultValue(0) ->help('0表示不限制,推荐为8位以上'); - + $builder->switch('Member_LoginInfoEncrypt', '登录信息加密') + ->help('开启后,登录信息请求时将会加密传输'); }); if (ModuleManager::getModuleConfig('Member', 'dataStatisticEnable', false)) { $builder->layoutPanel('存储上传', function ($builder) { diff --git a/module/Member/Api/Controller/AuthController.php b/module/Member/Api/Controller/AuthController.php index 42cc3febc..cf0e256c2 100644 --- a/module/Member/Api/Controller/AuthController.php +++ b/module/Member/Api/Controller/AuthController.php @@ -14,6 +14,7 @@ use ModStart\Core\Util\CurlUtil; use ModStart\Core\Util\EventUtil; use ModStart\Core\Util\RandomUtil; +use ModStart\Core\Util\SecureUtil; use ModStart\Core\Util\StrUtil; use ModStart\Misc\Captcha\CaptchaFacade; use ModStart\Module\ModuleBaseController; @@ -712,8 +713,8 @@ public function login() { $input = InputPackage::buildFromInput(); - $username = $input->getTrimString('username'); - $password = $input->getTrimString('password'); + $username = $input->getTrimStringWithAutoDecrypt('username'); + $password = $input->getTrimStringWithAutoDecrypt('password'); if (empty($username)) { return Response::generate(-1, '请输入用户'); } diff --git a/module/Member/Docs/release.md b/module/Member/Docs/release.md index b544efae0..4a9879e12 100644 --- a/module/Member/Docs/release.md +++ b/module/Member/Docs/release.md @@ -2,6 +2,7 @@ - 新增:VIP 优惠券功能集成,支持折扣券 - 新增:可完全自定义上传功能定制的特性 UploadScript Hook +- 新增:用户登录传输用户密码加密 - 优化:VIP 开通页面交互形式优化 --- diff --git a/module/Member/View/pc/inc/loginPanel.blade.php b/module/Member/View/pc/inc/loginPanel.blade.php index f2b91981f..54d33d219 100644 --- a/module/Member/View/pc/inc/loginPanel.blade.php +++ b/module/Member/View/pc/inc/loginPanel.blade.php @@ -11,14 +11,19 @@