From 38aff235316e8d49bf3558bfaa44f4c6ab2b78a4 Mon Sep 17 00:00:00 2001
From: liaoxujun@qq.com <liaoxujun@qq.com>
Date: 星期五, 15 九月 2023 17:26:58 +0800
Subject: [PATCH] 修改权限体系,增加标书信息管理权限分离,分为标书信息管理平台使用,和标书制作管理使用,修改权限表,订单表
---
DocumentServiceAPI.Application/UserAndLogin/LogInController.cs | 282 ++++++++++++++++++++++++++++++++++----------------------
1 files changed, 171 insertions(+), 111 deletions(-)
diff --git a/DocumentServiceAPI.Application/UserAndLogin/LogInController.cs b/DocumentServiceAPI.Application/UserAndLogin/LogInController.cs
index ddcbf1f..1b8bb16 100644
--- a/DocumentServiceAPI.Application/UserAndLogin/LogInController.cs
+++ b/DocumentServiceAPI.Application/UserAndLogin/LogInController.cs
@@ -1,10 +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;
@@ -16,6 +24,7 @@
/// </summary>
[ApiDescriptionSettings("LogInAndUser")]
[DynamicApiController]
+
public class LogInController
{
private TokenService _tokenService;
@@ -26,150 +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)
- {
- case 0:
- throw Oops.Oh($"璐︽埛鎴栬�呭瘑鐮侀敊璇�");
- case 1:
- needtoken = await _userService.CheckPsw(Tender[0].TenderId, Tender[0].EmployeeID,Parma.PassWord);
-
- if(!needtoken)
- throw Oops.Oh($"璐︽埛鎴栬�呭瘑鐮侀敊璇�");
- if (Parma.UnitID == null)
- {
- var Units = await _userService.GetUserUnitInfo(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,
- };
- }
+ 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)
+ {
+ //濡傛灉杩樻病纭畾绉熸埛ID 闇�瑕佸厛纭畾绉熸埛ID
+ List<TenderVM> Tender = await _userService.GetUserTenderList(Parma.ITCode);
+
+ switch (Tender.Count)
+ {
+ case 0:
+ throw Oops.Oh($"璐︽埛鎴栬�呭瘑鐮侀敊璇�");
+ case 1:
+ if (!IsTokenPass)
+ {
+ needtoken = await _userService.CheckPsw(Tender[0].TenderId, Tender[0].EmployeeID, Parma.PassWord);
+
+ if (!needtoken)
+ throw Oops.Oh($"璐︽埛鎴栬�呭瘑鐮侀敊璇�");
}
- Parma.TenantId = Tender[0].TenderId;
- 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,
- Tenders = Tender,
+ Units = Units,
};
+ }
-
}
-
-
-
-
- }
- else if(Parma.UnitID==null)
- {
-
- var Units = await _userService.GetUserUnitInfo(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,
- TID = 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