Browse Source

提交登录角色列表

黄贺彬 6 years ago
parent
commit
2a283f2e49

+ 6 - 6
TEAMModelOS.SDK/Extension/JwtAuth/Filters/JwtAuthorizationFilter.cs

@@ -29,16 +29,16 @@ namespace TEAMModelOS.SDK.Extension.JwtAuth.Filters
                 return _next(httpContext);
             }
             var tokenHeader = "";
+            if (httpContext.Request.Headers.ContainsKey(HttpConstant.Authorization))
+            {
+                tokenHeader = httpContext.Request.Headers[HttpConstant.Authorization];
+                tokenHeader = tokenHeader.Replace("Bearer ", "");
+            }
             if (httpContext.Request.Query.ContainsKey(HttpConstant.access_token))
             {
                 tokenHeader = httpContext.Request.Query[HttpConstant.access_token];
-                tokenHeader = tokenHeader.ToString().Trim();
+                tokenHeader = tokenHeader.Trim();
             }
-            if (httpContext.Request.Headers.ContainsKey(HttpConstant.Authorization)) {
-                tokenHeader = httpContext.Request.Headers[HttpConstant.Authorization];
-                tokenHeader = tokenHeader.Replace("Bearer ","");
-            }
-
             ClaimModel claimModel = JwtHelper.JwtHelper.SerializeJWT(tokenHeader);
 
             //将tokenModel存入缓存中

+ 1 - 1
TEAMModelOS.SDK/Extension/JwtAuth/JwtHelper/JwtHelper.cs

@@ -75,7 +75,7 @@ namespace TEAMModelOS.SDK.Extension.JwtAuth.JwtHelper
             object role = new object();
             claimModel.Claim = jwtToken.Claims.ToDictionary(claim => claim.Type, claim => claim.Value);
             claimModel.Claims = jwtToken.Claims.ToList();
-            jwtToken.Payload.TryGetValue("role", out role);
+            jwtToken.Payload.TryGetValue(JwtClaimTypes.Role, out role);
             if(role!=null)claimModel.Roles=role.ToString().Split(",").ToList();
             return claimModel;
         }

+ 11 - 10
TEAMModelOS.SDK/Helper/Network/HttpHelper/HttpContextHelper.cs

@@ -97,25 +97,26 @@ namespace TEAMModelOS.SDK.Helper.Network.HttpHelper
             }
             return aktoken;
         }
-        public static string GetLoginUser(IHttpContextAccessor httpContextAccessor) {
+        public static string GetLoginUser(IHttpContextAccessor httpContextAccessor ,string claimType) {
             var tokenHeader = "";
             HttpRequest request = httpContextAccessor.HttpContext.Request;
-            if (request.Query.ContainsKey(Constants.ACCESS_TOKEN))
-            {
-                tokenHeader = request.Query[Constants.ACCESS_TOKEN];
-                tokenHeader = tokenHeader.ToString().Trim();
-            }
             if (request.Headers.ContainsKey(Constants.AUTHORIZATION))
             {
                 tokenHeader = request.Headers[Constants.AUTHORIZATION];
-                tokenHeader = tokenHeader.ToString().Substring("Bearer ".Length).Trim();
+                //tokenHeader = tokenHeader.ToString().Substring("Bearer ".Length).Trim();
+                tokenHeader = tokenHeader.Replace("Bearer ", "");
+            }
+            if (request.Query.ContainsKey(Constants.ACCESS_TOKEN))
+            {
+                tokenHeader = request.Query[Constants.ACCESS_TOKEN];
+                tokenHeader = tokenHeader.Trim();
             }
             if (string.IsNullOrEmpty(tokenHeader)) {
-                return null;
+                return "";
             }
             ClaimModel claimModel = JwtHelper.SerializeJWT(tokenHeader);
-            claimModel.Claim.TryGetValue("id", out var id);
-            return id; 
+            claimModel.Claim.TryGetValue(claimType, out var claimValue);
+            return claimValue; 
         }
     }
 }

+ 7 - 2
TEAMModelOS.Service/Core/Implements/RoleService.cs

@@ -13,7 +13,7 @@ namespace TEAMModelOS.Service.Core.Implements
     {
         private IAzureTableDBRepository _repository;
         private IHttpContextAccessor _httpContextAccessor;
-        public RoleService(IAzureTableDBRepository repository,IHttpContextAccessor httpContextAccessor)
+        public RoleService(IAzureTableDBRepository repository, IHttpContextAccessor httpContextAccessor)
         {
             _httpContextAccessor = httpContextAccessor;
             _repository = repository;
@@ -30,7 +30,9 @@ namespace TEAMModelOS.Service.Core.Implements
                 return await _repository.FindListByDict<Role>(dict);
             }
         }
-
+        public async Task<Role> FindRoleByDict(Dictionary<string, object> dict) {
+            return await _repository.FindOneByDict<Role>(dict);
+        }
         public async Task<List<RoleSchool>> FindRolesSchoolByDict(Dictionary<string, object> dict)
         {
             if (dict.Count <= 0)
@@ -42,5 +44,8 @@ namespace TEAMModelOS.Service.Core.Implements
                 return await _repository.FindListByDict<RoleSchool>(dict);
             }
         }
+        public async Task<Role> FindRoleByRowKey(string rowKey) {
+            return await _repository.FindByRowKey<Role>(rowKey);
+        }
     }
 }

File diff suppressed because it is too large
+ 5 - 3
TEAMModelOS.Service/Core/Implements/SchoolService.cs


+ 3 - 1
TEAMModelOS.Service/Core/Interfaces/IRoleService.cs

@@ -6,9 +6,11 @@ using TEAMModelOS.Model.Core.Models;
 
 namespace TEAMModelOS.Service.Core.Interfaces
 {
-    public interface IRoleService
+    public interface IRoleService :IBusinessService
     {
         Task<List<Role>> FindRolesByDict(Dictionary<string ,object> dict);
+        Task<Role> FindRoleByDict(Dictionary<string, object> dict);
         Task<List<RoleSchool>> FindRolesSchoolByDict(Dictionary<string, object> dict);
+        Task<Role> FindRoleByRowKey(string rowKey);
     }
 }

+ 11 - 10
TEAMModelOS/Controllers/Core/BaseController.cs

@@ -11,27 +11,28 @@ namespace TEAMModelOS.Controllers.Core
 {
     public class BaseController : Controller
     {
-        public   string GetLoginUser()
+        public   string GetLoginUser(string claimType)
         {
             var tokenHeader = "";
             HttpRequest request = HttpContext.Request;
-            if (request.Query.ContainsKey(Constants.ACCESS_TOKEN))
-            {
-                tokenHeader = request.Query[Constants.ACCESS_TOKEN];
-                tokenHeader = tokenHeader.ToString().Trim();
-            }
             if (request.Headers.ContainsKey(Constants.AUTHORIZATION))
             {
                 tokenHeader = request.Headers[Constants.AUTHORIZATION];
-                tokenHeader = tokenHeader.ToString().Substring("Bearer ".Length).Trim();
+                //tokenHeader = tokenHeader.ToString().Substring("Bearer ".Length).Trim();
+                tokenHeader = tokenHeader.Replace("Bearer ", "");
+            }
+            if (request.Query.ContainsKey(Constants.ACCESS_TOKEN))
+            {
+                tokenHeader = request.Query[Constants.ACCESS_TOKEN];
+                tokenHeader = tokenHeader.Trim();
             }
             if (string.IsNullOrEmpty(tokenHeader))
             {
-                return null;
+                return "";
             }
             ClaimModel claimModel = JwtHelper.SerializeJWT(tokenHeader);
-            claimModel.Claim.TryGetValue("id", out var id);
-            return id;
+            claimModel.Claim.TryGetValue(claimType, out var claimValue);
+            return claimValue;
         }
     }
 }

+ 27 - 5
TEAMModelOS/Controllers/Core/RoleController.cs

@@ -1,3 +1,5 @@
+using IdentityModel;
+using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
 using System;
 using System.Collections.Generic;
@@ -18,15 +20,35 @@ namespace TEAMModelOS.Controllers.Core
     public class RoleController : BaseController
     {
         private IRoleService _roleSeservice;
-
-        public RoleController(IRoleService roleService) {
+        private IHttpContextAccessor _httpContextAccessor;
+        public RoleController(IRoleService roleService, IHttpContextAccessor httpContextAccessor)
+        {
             _roleSeservice = roleService;
+            _httpContextAccessor = httpContextAccessor;
         }
-
-        public async Task<BaseJosnRPCResponse> FindRoleByDict(JosnRPCRequest<Dictionary<string ,object>> request) {
+        [HttpPost("FindRoleByDict")]
+        public async Task<BaseJosnRPCResponse> FindRoleByDict(JosnRPCRequest<Dictionary<string, object>> request)
+        {
             JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
             List<Role> roles = await _roleSeservice.FindRolesByDict(request.@params);
-            return builder.Data(roles).build() ;
+            return builder.Data(roles).build();
+        }
+        [HttpPost("GetLoginRoles")]
+        public async Task<BaseJosnRPCResponse> GetLoginRoles(JosnRPCRequest<Dictionary<string, object>> request)
+        {
+            JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
+            string rolecodes = GetLoginUser(JwtClaimTypes.Role);
+            List<Role> roles = new List<Role>();
+            string[] codes = rolecodes.Split(",");
+            foreach (string code in codes)
+            {
+                Role role = await _roleSeservice.FindRoleByRowKey(code);
+                if (role != null&& !string.IsNullOrEmpty(role.RowKey))
+                {
+                    roles.Add(role);
+                }
+            }
+            return builder.Data(roles).build();
         }
     }
 }

+ 2 - 2
TEAMModelOS/SeedData/SeedDataService.cs

@@ -65,7 +65,7 @@ namespace TEAMModelOS.SeedData
                 m.RoleCode = "Root";
                 m.RoleName = "超级管理员";
                 m.SchoolCode = "default";
-                m.SchoolName = "默认学校";
+                m.SchoolName = "系统默认";
             });
             await _azureTableDBRepository.SaveOrUpdateAll<RoleUser>(usersRoot);
             List<RoleUser>  usersAdmin = MessagePackHelper.JsonToObject<List<RoleUser>>(admins.ToJson());
@@ -75,7 +75,7 @@ namespace TEAMModelOS.SeedData
                 m.RoleCode = "Admin";
                 m.RoleName = "系统管理员";
                 m.SchoolCode = "default";
-                m.SchoolName = "默认学校";
+                m.SchoolName = "系统默认";
             });
             await _azureTableDBRepository.SaveOrUpdateAll<RoleUser>(usersAdmin);
             //RoleUser roleUser = new RoleUser { RowKey = Guid.NewGuid().ToString(), PartitionKey = "Teacher" ,RoleCode= "Teacher",RoleName= "任课教师", SchoolCode = "2151022409", SchoolName= "成都高新区芳草小学" };

+ 5 - 0
TEAMModelOS/appsettings.Development.json

@@ -152,6 +152,11 @@
         "NickName": "周胜",
         "Phone": "8617781294959",
         "TeamModelId": "habook053#9876"
+      },
+      {
+        "NickName": "周响军",
+        "Phone": "8618482133094",
+        "TeamModelId": "18482133094#8280"
       }
     ]
   }

+ 47 - 42
TEAMModelOS/appsettings.json

@@ -112,47 +112,52 @@
         "TeamModelId": "18482133094#8280"
       }
     ],
-    "Admin": [
-      {
-        "NickName": "Power",
-        "Phone": "886935180824",
-        "TeamModelId": "13096300695#0901"
-      },
-      {
-        "NickName": "台北梁仁楷",
-        "Phone": "8613263110175",
-        "TeamModelId": "steven#7306"
-      },
-      {
-        "NickName": "陈权",
-        "Phone": "8613880505117",
-        "TeamModelId": "eric#3850"
-      },
-      {
-        "NickName": "王彬琰",
-        "Phone": "8613982151576",
-        "TeamModelId": "wendy#3938"
-      },
-      {
-        "NickName": "刘彬",
-        "Phone": "8618981903918",
-        "TeamModelId": "lb18981903918#6134"
-      },
-      {
-        "NickName": "黄贺彬",
-        "Phone": "8615283771540",
-        "TeamModelId": "huanghb#8838"
-      },
-      {
-        "NickName": "李棋坤",
-        "Phone": "8613096300695",
-        "TeamModelId": "13096300695#0901"
-      },
-      {
-        "NickName": "周胜",
-        "Phone": "8617781294959",
-        "TeamModelId": "habook053#9876"
-      }
-    ]
+  "Admin": [
+    {
+      "NickName": "Power",
+      "Phone": "886935180824",
+      "TeamModelId": "13096300695#0901"
+    },
+    {
+      "NickName": "台北梁仁楷",
+      "Phone": "8613263110175",
+      "TeamModelId": "steven#7306"
+    },
+    {
+      "NickName": "陈权",
+      "Phone": "8613880505117",
+      "TeamModelId": "eric#3850"
+    },
+    {
+      "NickName": "王彬琰",
+      "Phone": "8613982151576",
+      "TeamModelId": "wendy#3938"
+    },
+    {
+      "NickName": "刘彬",
+      "Phone": "8618981903918",
+      "TeamModelId": "lb18981903918#6134"
+    },
+    {
+      "NickName": "黄贺彬",
+      "Phone": "8615283771540",
+      "TeamModelId": "huanghb#8838"
+    },
+    {
+      "NickName": "李棋坤",
+      "Phone": "8613096300695",
+      "TeamModelId": "13096300695#0901"
+    },
+    {
+      "NickName": "周胜",
+      "Phone": "8617781294959",
+      "TeamModelId": "habook053#9876"
+    },
+    {
+      "NickName": "周响军",
+      "Phone": "8618482133094",
+      "TeamModelId": "18482133094#8280"
+    }
+  ]
   }
 }