shengxuefei 4 年之前
父节点
当前提交
7c7bf1f9b6

+ 13 - 1
PMS.NetCore/PMS.NetCore.BusinessCore/BaseCore/rolesManager.cs

@@ -42,4 +42,16 @@ public class rolesManager : DbContext<roles>
         return list;
     }
 
-}
+    /// <summary>
+    /// 根据角色ID获取用户功能模块权限
+    /// </summary>
+    /// <param name="staffcode"></param>
+    /// <returns></returns>
+    public List<dynamic> GetFuncs(string roleid)
+    {
+        var sql = $"SELECT b.*,a.RoleID,a.Actions FROM dbo.rolesInfuncs a INNER JOIN dbo.funcs b ON a.FuncID=b.FuncID WHERE a.RoleID='{roleid}'";
+        var list = Db.Ado.SqlQuery<dynamic>(sql);
+        return list;
+    }
+
+}

+ 100 - 6
PMS.NetCore/PMS.NetCore/Controllers/UserController.cs

@@ -20,6 +20,9 @@ using System.IO;
 
 namespace PMS.NetCore.Controllers
 {
+    /// <summary>
+    /// 用户信息
+    /// </summary>
     [Produces("application/json;charset=UTF-8")]
     [Route("api/User")]
     [ServiceFilter(typeof(Filter.TokenAuthorize))]
@@ -39,7 +42,15 @@ namespace PMS.NetCore.Controllers
         /// 令牌获取和验证类
         /// </summary>
         private readonly ITokenHelper tokenHelper = null;
-
+        /// <summary>
+        /// 用户信息控制器
+        /// </summary>
+        /// <param name="memoryCache"></param>
+        /// <param name="httpclientfactory"></param>
+        /// <param name="userManager"></param>
+        /// <param name="signInManager"></param>
+        /// <param name="_tokenHelper"></param>
+        /// <param name="configuration"></param>
         public UserController(IMemoryCache memoryCache, IHttpClientFactory httpclientfactory, UserManager<AppUser> userManager,
             SignInManager<AppUser> signInManager, ITokenHelper _tokenHelper,
             IConfiguration configuration)
@@ -53,6 +64,11 @@ namespace PMS.NetCore.Controllers
             tokenHelper = _tokenHelper;
         }
 
+        /// <summary>
+        /// 用户登录
+        /// </summary>
+        /// <param name="request">用户名,密码</param>
+        /// <returns></returns>
         [AllowAnonymous]
         [HttpPost]
         [Route("")]
@@ -77,10 +93,27 @@ namespace PMS.NetCore.Controllers
             //loginUser.IsSuccess = false;
             if (ComparePasswords(user.Password, request.Password))
             {
-                //获取用户的所有角色
-                var rolesList = new rolesManager().GetRoles(user.StaffCode);
-                loginUser.Roles = rolesList;
-                loginUser.User = user;
+                var isLock = user.IsLock == 0 ? false : true;
+                var isSys = user.IsSystem == 1 ? true : false;
+                if(!isLock||isSys)
+                {
+                    //获取用户的所有角色
+                    var rolesList = new rolesManager().GetRoles(user.StaffCode);
+                    loginUser.Roles = rolesList;
+                    loginUser.User = user;
+                    loginUser.User.Password = "";    //密码不返回接口
+                }
+                else
+                {
+                    var res1 = new ApiResponse
+                    {
+                        Code = 200,
+                        IsSuccess = false,
+                        ErrMsg = "帐号已被冻结"
+
+                    };
+                    return Json(res1);
+                }
 
             }
             else
@@ -100,7 +133,7 @@ namespace PMS.NetCore.Controllers
             loginUser.License = new licenseManager().GetList().FirstOrDefault();
             loginUser.DeptName = new deptsManager().Db.Queryable<depts>().First(m => m.DeptCode == loginUser.User.DeptCode)?.DeptName;
 
-            //获取令牌,返回客户端 
+            //获取令牌,返回客户端
             Dictionary<string, string> keyValuePairs = new Dictionary<string, string>
                     {
                         { "UserID", user.UserID }
@@ -120,6 +153,67 @@ namespace PMS.NetCore.Controllers
             logger.Info($"【ValidateUser】登录接口输出:{JsonConvert.SerializeObject(res)}");
             return Json(res);
         }
+        /// <summary>
+        /// 根据用户编号获取用户所有角色
+        /// </summary>
+        /// <param name="staffcode">用户编号</param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("GetRoles")]
+        public JsonResult GetRoles(string staffcode)
+        {
+            logger.Info($"【GetRoles】staffcode:{staffcode}");
+            //获取用户的所有角色
+            var rolesList = new rolesManager().GetRoles(staffcode);
+            logger.Info($"【GetRoles】rolesList:{JsonConvert.SerializeObject( rolesList)}");
+            return Json(rolesList);
+        }
+        /// <summary>
+        /// 根据用户编号获取打印权限
+        /// </summary>
+        /// <param name="staffcode"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("GetPrintfiles")]
+        public JsonResult GetPrintfiles(string staffcode)
+        {
+            logger.Info($"【GetPrintfiles】staffcode:{staffcode}");
+            //获取打印权限
+            var printList = new rolesManager().GetPrintfiles(staffcode);
+            logger.Info($"【GetPrintfiles】printList:{JsonConvert.SerializeObject(printList)}");
+            return Json(printList);
+        }
+        /// <summary>
+        /// 根据用户编号获取用户消息语句权限
+        /// </summary>
+        /// <param name="staffcode"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("GetMsgtypes")]
+        public JsonResult GetMsgtypes(string staffcode)
+        {
+            logger.Info($"【GetMsgtypes】staffcode:{staffcode}");
+            //获取打印权限
+            var msgList = new rolesManager().GetMsgtypes(staffcode);
+            logger.Info($"【GetMsgtypes】msgList:{JsonConvert.SerializeObject(msgList)}");
+            return Json(msgList);
+        }
+
+        /// <summary>
+        /// 根据角色ID获取用户功能模块权限
+        /// </summary>
+        /// <param name="roleid"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("GetFuncs")]
+        public JsonResult GetFuncs(string roleid)
+        {
+            logger.Info($"【GetFuncs】roleid:{roleid}");
+            //获取打印权限
+            var List = new rolesManager().GetFuncs(roleid);
+            logger.Info($"【GetFuncs】List:{JsonConvert.SerializeObject(List)}");
+            return Json(List);
+        }
 
         #region 比较存储在数据库中的用户密码和输入的用户密码是否一致
         /// <summary>

+ 4 - 1
PMS.NetCore/PMS.NetCore/Filter/TokenAuthorize.cs

@@ -16,6 +16,7 @@ namespace PMS.NetCore.Filter
     public class TokenAuthorize : Attribute, IAuthorizationFilter
     {
         private ITokenHelper tokenHelper;
+        private NLog.Logger logger;
         /// <summary>
         /// 滤器实现通用token验证
         /// </summary>
@@ -23,6 +24,7 @@ namespace PMS.NetCore.Filter
         public TokenAuthorize(ITokenHelper _tokenHelper) //通过依赖注入得到数据访问层实例
         {
             tokenHelper = _tokenHelper;
+            logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
         }
         public void OnAuthorization(AuthorizationFilterContext context)
         {
@@ -37,7 +39,8 @@ namespace PMS.NetCore.Filter
             }
             //获取token
             //object tokenobj = context.ActionArguments["token"];//前端地址栏参数传参
-            var token = context.HttpContext.Request.Headers["X-Token"].ToString();//前端写在header里面获取的
+            var token = context.HttpContext.Request.Headers["Authorization"].ToString();//前端写在header里面获取的
+            logger.Info($"Authorization token:{token}");
             if (token.IsNullOrEmpty())
             {
                 ret.IsSuccess = false;

+ 8 - 0
PMS.NetCore/PMS.NetCore/PMS.NetCore.csproj

@@ -4,6 +4,14 @@
     <TargetFramework>net5.0</TargetFramework>
   </PropertyGroup>
 
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+    <DocumentationFile>D:\路涛科技\源代码\物业系统netcore版\PropertyManagementSystem.NetCore\PMS.NetCore\PMS.NetCore\PMS.NetCore.xml</DocumentationFile>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+    <DocumentationFile>D:\路涛科技\源代码\物业系统netcore版\PropertyManagementSystem.NetCore\PMS.NetCore\PMS.NetCore\PMS.NetCore.xml</DocumentationFile>
+  </PropertyGroup>
+
   <ItemGroup>
     <PackageReference Include="EasyMemoryCache" Version="1.0.15" />
     <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.3" />

+ 106 - 0
PMS.NetCore/PMS.NetCore/PMS.NetCore.xml

@@ -0,0 +1,106 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>PMS.NetCore</name>
+    </assembly>
+    <members>
+        <member name="T:PMS.NetCore.Controllers.UserController">
+            <summary>
+            用户信息
+            </summary>
+        </member>
+        <member name="F:PMS.NetCore.Controllers.UserController.EncryptKeyStr">
+            <summary>
+            加密关键字
+            </summary>
+        </member>
+        <member name="F:PMS.NetCore.Controllers.UserController.tokenHelper">
+            <summary>
+            令牌获取和验证类
+            </summary>
+        </member>
+        <member name="M:PMS.NetCore.Controllers.UserController.#ctor(Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Net.Http.IHttpClientFactory,Microsoft.AspNetCore.Identity.UserManager{Sugar.Enties.AppUser},Microsoft.AspNetCore.Identity.SignInManager{Sugar.Enties.AppUser},Utils.Jwt.ITokenHelper,Microsoft.Extensions.Configuration.IConfiguration)">
+            <summary>
+            用户信息控制器
+            </summary>
+            <param name="memoryCache"></param>
+            <param name="httpclientfactory"></param>
+            <param name="userManager"></param>
+            <param name="signInManager"></param>
+            <param name="_tokenHelper"></param>
+            <param name="configuration"></param>
+        </member>
+        <member name="M:PMS.NetCore.Controllers.UserController.ValidateUser(Sugar.Enties.UserLoginDTO)">
+            <summary>
+            用户登录
+            </summary>
+            <param name="request">用户名,密码</param>
+            <returns></returns>
+        </member>
+        <member name="M:PMS.NetCore.Controllers.UserController.GetRoles(System.String)">
+            <summary>
+            根据用户编号获取用户所有角色
+            </summary>
+            <param name="staffcode">用户编号</param>
+            <returns></returns>
+        </member>
+        <member name="M:PMS.NetCore.Controllers.UserController.GetPrintfiles(System.String)">
+            <summary>
+            根据用户编号获取打印权限
+            </summary>
+            <param name="staffcode"></param>
+            <returns></returns>
+        </member>
+        <member name="M:PMS.NetCore.Controllers.UserController.GetMsgtypes(System.String)">
+            <summary>
+            根据用户编号获取用户消息语句权限
+            </summary>
+            <param name="staffcode"></param>
+            <returns></returns>
+        </member>
+        <member name="M:PMS.NetCore.Controllers.UserController.GetFuncs(System.String)">
+            <summary>
+            根据角色ID获取用户功能模块权限
+            </summary>
+            <param name="roleid"></param>
+            <returns></returns>
+        </member>
+        <member name="M:PMS.NetCore.Controllers.UserController.ComparePasswords(System.String,System.String)">
+            <summary>
+            比较存储在数据库中的用户密码和输入的用户密码是否一致
+            </summary>
+            <param name="storedPassword">存储在数据库中的用户密码</param>
+            <param name="inputPassword">输入的用户密码</param>
+            <returns>true or false</returns>
+        </member>
+        <member name="M:PMS.NetCore.Controllers.UserController.Encrypt(System.String,System.String)">
+            <summary>
+            加密
+            </summary>
+            <param name="datastr">要加密的字符串</param>
+            <param name="keystr">机密密钥</param>
+            <returns>加密后的字符串</returns>
+        </member>
+        <member name="M:PMS.NetCore.Controllers.UserController.Decrypt(System.String,System.String)">
+            <summary>
+            解密
+            </summary>
+            <param name="datastr">要解密的字符串</param>
+            <param name="keystr">机密密钥</param>
+            <returns>解密后的字符串</returns>
+        </member>
+        <member name="M:PMS.NetCore.Filter.TokenAuthorize.#ctor(Utils.Jwt.ITokenHelper)">
+            <summary>
+            滤器实现通用token验证
+            </summary>
+            <param name="_tokenHelper"></param>
+        </member>
+        <member name="M:PMS.NetCore.Filter.TokenAuthorize.HasAllowAnonymous(Microsoft.AspNetCore.Mvc.Filters.AuthorizationFilterContext)">
+            <summary>
+            用于判断Action有没有AllowAnonymous标签
+            </summary>
+            <param name="context"></param>
+            <returns></returns>
+        </member>
+    </members>
+</doc>

+ 28 - 2
PMS.NetCore/PMS.NetCore/Startup.cs

@@ -13,6 +13,8 @@ using Quartz;
 using Quartz.Impl;
 using Sugar.Enties;
 using System;
+using System.IO;
+using System.Reflection;
 using Utils;
 using Utils.Jwt;
 
@@ -38,7 +40,7 @@ namespace PMS.NetCore
             services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>();
 
             // TODO create options classes for app settings
-            var identityConn = AppSettingsHelper.Configuration["Logging:AppSettings:ConnectionString"];
+            var identityConn = AppSettingsHelper.Configuration["AppSettings:ConnectionString"];
 
             //identityConn = identityConn.Replace(CONTENTROOTPATHTOKEN, _env.ContentRootPath);
 
@@ -94,7 +96,31 @@ namespace PMS.NetCore
             services.AddSwaggerGen(c =>
             {
                 c.SwaggerDoc("v1", new OpenApiInfo { Title = "PMS.NetCore API——Net5.0", Version = "v1" });
-
+                c.AddSecurityDefinition("Bearer",
+                   new OpenApiSecurityScheme
+                   {
+                       In = ParameterLocation.Header,
+                       Description = "请输入OAuth接口返回的Token,前置Bearer。",
+                       Name = "Authorization",
+                       Type = SecuritySchemeType.ApiKey
+                   });
+                c.AddSecurityRequirement(new OpenApiSecurityRequirement {
+
+                    { new OpenApiSecurityScheme
+                        {
+                            Reference = new OpenApiReference()
+                            {
+                            Id = "Bearer",
+                            Type = ReferenceType.SecurityScheme
+                            }
+                        }, Array.Empty<string>()
+                    }
+                });
+                // 为 Swagger 设置xml文档注释路径
+                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
+                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
+                // 添加控制器层注释,true表示显示控制器注释
+                c.IncludeXmlComments(xmlPath, true);
             });
         }
 

+ 1 - 1
PMS.NetCore/PMS.NetCore/appsettings.json

@@ -1,6 +1,6 @@
 {
   "isIIS": false,
-  "virtualPath": "/eq",
+  "virtualPath": "/wycore",
   "Logging": {
     "IncludeScopes": false,
     "Debug": {