public override Task <GrantResponseDTO> GrantByToken(GrantByTokenRequestDTO request, ServerCallContext context) { return(Task.Run(() => { GrantResponseDTO response = new GrantResponseDTO(); UserToken token = UserToken.FromCipherToken(request.Token); if (token == null) { response.RetCode = "0400"; response.RetMsg = "无效的token"; return response; } OAuthApp app = OAuthAppCache.Get(request.Appid); if (app == null) { response.RetCode = "0400"; response.RetMsg = "无效的应用id"; return response; } if (app.Id != token.AppId) { response.RetCode = "0403"; response.RetMsg = "无效的token"; return response; } CodePrivilege[] privileges = null; if (request.Grants != null && request.Grants.Count > 0) { privileges = new CodePrivilege[request.Grants.Count]; for (int i = 0; i < request.Grants.Count; i++) { privileges[i] = new CodePrivilege { Id = request.Grants[i].Id, Type = request.Grants[i].Type }; } } GrantTokenPrivilegeProvider grant = new GrantTokenPrivilegeProvider(app.Appid, token.UserId, request.Scopes, request.Client.DeviceId); if (!grant.Grant(request.GrantAll, privileges)) { response.RetCode = "0500"; response.RetMsg = "授权失败,请重试"; return response; } response.RetCode = "0000"; response.RetMsg = "ok"; response.Data = new GrantResponseDTO.Types.Result { Code = grant.Auth_Code }; return response; })); }
[HttpPost("client")] // api/authorize/client public ResponseResult <GrantResponseDTO> GrantByToken(GrantByTokenRequestDTO data) { GrantResponseDTO response = new GrantResponseDTO(); UserToken token = UserToken.FromCipherToken(data.Token); if (token == null) { return(Fail <GrantResponseDTO>("无效的token", "0400")); } OAuthApp app = OAuthAppCache.Get(data.Appid); if (app == null) { return(Fail <GrantResponseDTO>("无效的应用id", "0400")); } if (app.Id != token.AppId) { return(Fail <GrantResponseDTO>("无效的token", "0500")); } CodePrivilege[] privileges = null; if (data.Privileges != null && data.Privileges.Count > 0) { privileges = new CodePrivilege[data.Privileges.Count]; for (int i = 0; i < data.Privileges.Count; i++) { privileges[i] = new CodePrivilege { Id = data.Privileges[i].Id, Type = data.Privileges[i].Type }; } } GrantTokenPrivilegeProvider grant = new GrantTokenPrivilegeProvider(app.Appid, token.UserId, data.Scopes, data.Client.DeviceId); if (!grant.Grant(data.GrantAll, privileges)) { return(Fail <GrantResponseDTO>("授权失败,请重试")); } response.Code = grant.Auth_Code; return(Success(response)); }