From 00501bf99a6eeb26b79bbe2c83de84edff7e8f65 Mon Sep 17 00:00:00 2001 From: liaoxujun@qq.com <liaoxujun@qq.com> Date: 星期四, 07 九月 2023 15:29:37 +0800 Subject: [PATCH] Merge branch 'master' of http://47.108.235.38:8080/r/DocumentService --- DocumentServiceAPI.Application/UserAndLogin/LogInController.cs | 279 +++++++++++++++++++++++++++++++++---------------------- 1 files changed, 166 insertions(+), 113 deletions(-) diff --git a/DocumentServiceAPI.Application/UserAndLogin/LogInController.cs b/DocumentServiceAPI.Application/UserAndLogin/LogInController.cs index 3478ee1..1b8bb16 100644 --- a/DocumentServiceAPI.Application/UserAndLogin/LogInController.cs +++ b/DocumentServiceAPI.Application/UserAndLogin/LogInController.cs @@ -1,11 +1,18 @@ 锘縰sing DocumentServiceAPI.Application.UserAndLogin.Services; using DocumentServiceAPI.Application.UserAndLogin.ViewMode; +using DocumentServiceAPI.Model.cyDocumentModel; +using DocumentServiceAPI.Model.UserInfoModel; using DocumentServiceAPI.Utility; using Furion.DynamicApiController; using Furion.JsonSerialization; +using Microsoft.AspNetCore.Http; +using Microsoft.IdentityModel.Tokens; +using NetTaste; +using Newtonsoft.Json.Linq; using Swashbuckle.AspNetCore.Annotations; using System; using System.Collections.Generic; +using System.IdentityModel.Tokens.Jwt; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -28,155 +35,201 @@ } /// <summary> /// 鐧诲綍 1 杈撳叆鍛樺伐璐︽埛鎴栬�呯鎴疯处鎴凤紝2 閫夋嫨绉熸埛璐︽埛锛�3 閫夋嫨鍏徃 + /// 褰撳瘑鐮佷负绌烘椂锛屽甫鍏ョ敤鎴蜂腑蹇僼oken鍗冲彲瀹炵幇鐧诲綍 /// </summary> /// <returns>鐧诲綍淇℃伅</returns> [HttpPost("LogoIn")] - public async Task<RetLoginVM> LogoIn (LoginPsWordIN Parma) + public async Task<RetLoginVM> LogoIn ( LoginPsWordIN Parma) { - bool needtoken=false; - if (Parma.TenantId==null) + //zctok鏍¢獙鎴愬姛鏄惁鏍囧織 + bool IsTokenPass=false; + + if(string.IsNullOrEmpty(Parma.PassWord)) { - //濡傛灉杩樻病纭畾绉熸埛ID 闇�瑕佸厛纭畾绉熸埛ID - List<TenderVM>Tender = await _userService.GetUserTenderList(Parma.ITCode); - - switch (Tender.Count) + + var Request = App.HttpContext.Request; + string stoken = Request.Headers["Authorization"]; + if (stoken == null) + throw Oops.Oh("娌℃湁杈撳叆瀵嗙爜"); + stoken = stoken.Replace("Bearer ", ""); + + var isvale = _tokenService.CheckJwt(stoken, out SecurityToken securityToken); + JwtSecurityToken jwtToken = securityToken as JwtSecurityToken; + string itcode = jwtToken.Claims.FirstOrDefault(claim => claim.Type == "sub")?.Value; + if (isvale == false) + throw Oops.Oh("鐧诲綍淇℃伅鍑洪敊"); + if(Parma.ITCode!= itcode) + throw Oops.Oh("鐢ㄦ埛鍚嶉敊璇�"); + IsTokenPass=true; + + } + + bool needtoken = false; + + if (Parma.TenantId == null) { - case 0: - throw Oops.Oh($"璐︽埛鎴栬�呭瘑鐮侀敊璇�"); - case 1: - needtoken = await _userService.CheckPsw(Tender[0].TenderId, Tender[0].EmployeeID,Parma.PassWord); - - if(!needtoken) + //濡傛灉杩樻病纭畾绉熸埛ID 闇�瑕佸厛纭畾绉熸埛ID + List<TenderVM> Tender = await _userService.GetUserTenderList(Parma.ITCode); + + switch (Tender.Count) + { + case 0: throw Oops.Oh($"璐︽埛鎴栬�呭瘑鐮侀敊璇�"); - - Parma.TenantId = Tender[0].TenderId; - Parma.employeeID = Tender[0].EmployeeID; - if (Parma.UnitID == null) + case 1: + if (!IsTokenPass) { - - List<UnitVM> Units = await _userService.GetUserUnitList(Parma.TenantId ?? 0); - if (Units.Count == 0) - { - //娌℃湁鍏徃 - needtoken = true; - } - else if (Units.Count == 1) - { - Parma.UnitID = Units[0].UnitID; - needtoken = true; - } - else - { - //鍏朵粬闇�瑕佺敤鎴烽�夋嫨绉熸埛 - return new RetLoginVM - { - NeedNext = true, - Units = Units, + needtoken = await _userService.CheckPsw(Tender[0].TenderId, Tender[0].EmployeeID, Parma.PassWord); - }; - } + if (!needtoken) + throw Oops.Oh($"璐︽埛鎴栬�呭瘑鐮侀敊璇�"); } - - break; - - default: + + + Parma.TenantId = Tender[0].TenderId; + Parma.employeeID = Tender[0].EmployeeID; + if (Parma.UnitID == null) + { + + List<UnitVM> Units = await _userService.GetUserUnitList(Parma.TenantId ?? 0); + if (Units.Count == 0) + { + //娌℃湁鍏徃 + needtoken = true; + } + else if (Units.Count == 1) + { + Parma.UnitID = Units[0].UnitID; + needtoken = true; + } + else + { + //鍏朵粬闇�瑕佺敤鎴烽�夋嫨绉熸埛 + return new RetLoginVM + { + NeedNext = true, + Units = Units, + + }; + } + } + + break; + + default: + //鍏朵粬闇�瑕佺敤鎴烽�夋嫨绉熸埛 + return new RetLoginVM + { + NeedNext = true, + Tenants = Tender, + + }; + + + } + + + + + + } + else if (Parma.UnitID == null) + { + + var Units = await _userService.GetUserUnitList(Parma.TenantId ?? 0); + if (Units.Count == 0) + { + //娌℃湁鍏徃 + needtoken = true; + } + else if (Units.Count == 1) { + Parma.UnitID = Units[0].UnitID; + needtoken = true; + } + else + { //鍏朵粬闇�瑕佺敤鎴烽�夋嫨绉熸埛 return new RetLoginVM { NeedNext = true, - Tenants = Tender, + Units = Units, }; + } - } - - - - - } - else if(Parma.UnitID==null) - { - - var Units = await _userService.GetUserUnitList(Parma.TenantId??0); - if(Units.Count==0) + if (needtoken || Parma.UnitID != null) { - //娌℃湁鍏徃 - needtoken = true; - } - else if (Units.Count==1) { - Parma.UnitID= Units[0].UnitID; - needtoken = true; - } - else + + TenderVM Tender = (await _userService.GetUserTenderList(Parma.ITCode)).Where(x => x.TenderId == Parma.TenantId && x.EmployeeID == Parma.employeeID).SingleOrDefault(); + if (Tender == null) + { + throw Oops.Oh($"璐︽埛瀵嗙爜鎴栬�呯鎴烽�夋嫨閿欒"); + } + if (!IsTokenPass) { - //鍏朵粬闇�瑕佺敤鎴烽�夋嫨绉熸埛 + needtoken = await _userService.CheckPsw(Tender.TenderId, Tender.EmployeeID, Parma.PassWord); + + if (!needtoken) + throw Oops.Oh($"璐︽埛鎴栬�呭瘑鐮侀敊璇�"); + } + + var hasPermissions= await _userService.TenderHasPermissions(Tender.TenderId); + if(!hasPermissions) + { + throw Oops.Oh($"闆嗗洟鐢ㄨ处鍙凤細{Tender.ItCode}浣跨敤鏈熼檺宸茬粡杩囨湡鎴栬�呮病鏈変娇鐢ㄦ潈闄�"); + } + + + var token = _tokenService.CreateToken(new Model.JwtInfo + { + EID = Tender.EmployeeID, + LogInSource = Parma.Form, + TEID = Tender.TenderId, + UID = Parma.UnitID, + }); return new RetLoginVM { - NeedNext = true, - Units = Units, + NeedNext = false, + Token = token, }; } + throw Oops.Oh($"鍙傛暟閿欒"); + + + - } - if(needtoken|| Parma.UnitID!=null) + } + + /// <summary> + /// 鏄惁鏄敤鎴风鎴凤紝鎴栬�呮槸鍛樺伐 + /// </summary> + /// <param name="ITCode">璐﹀彿</param> + /// <returns> 杩斿洖true 浠h〃鏄紝 false浠h〃涓嶆槸</returns> + [HttpGet("IDIsEmployee")] + public async Task<bool> IDIsEmployee(string ITCode, [FromServices] ISqlSugarClient db) + { + var ad= ITCode.TryValidate(ValidationTypes.PhoneNumber); + if(!ad.IsValid) { - - TenderVM Tender = (await _userService.GetUserTenderList(Parma.ITCode)).Where(x=>x.TenderId==Parma.TenantId&&x.EmployeeID==Parma.employeeID).SingleOrDefault(); - if(Tender==null) - { - throw Oops.Oh($"璐︽埛瀵嗙爜鎴栬�呯鎴烽�夋嫨閿欒"); - } - needtoken = await _userService.CheckPsw(Tender. TenderId, Tender.EmployeeID, Parma.PassWord); - - if (!needtoken) - throw Oops.Oh($"璐︽埛鎴栬�呭瘑鐮侀敊璇�"); - var token= _tokenService.CreateToken(new Model.JwtInfo - { - EID = Tender.EmployeeID, - LogInSource = Parma.Form, - TEID = Tender.TenderId, - UID = Parma.UnitID, - }); - return new RetLoginVM - { - NeedNext = false, - Token = token, - - }; + throw Oops.Oh("璇疯緭鍏ユ纭殑璐﹀彿"); } - throw Oops.Oh($"鍙傛暟閿欒"); - + + var count= await db.Queryable<TenantInfo>().Where(x=>x.ItCode==ITCode&&x.IsEn==true&&x.IsDel==false).WithCache(600).CountAsync(); + if (count > 0) + return true; + count=await db.Queryable<Document_EmployeeInfo>().Where(x=>x.UserName==ITCode).WithCache(600).CountAsync(); + if (count > 0) + return true; + return false; } - - /// <summary> - /// 鑾峰彇鍏徃鍒楄〃 - /// </summary> - /// <returns>鐧诲綍淇℃伅</returns> - public bool GetUnitList() - { - return true; - } - /// <summary> - /// 鑾峰彇鍏徃鍒楄〃 - /// </summary> - /// <returns>鐧诲綍淇℃伅</returns> - public bool GetTenantInfoList() - { - return true; - } - public string Get() - { - return $"Hello {nameof(Furion)}"; - } } } -- Gitblit v1.9.1