using Elight.Entity; using Elight.Utility; using Elight.Utility.Code; using Elight.Utility.Encrypt; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.IdentityModel.Tokens; using Newtonsoft.Json; using SqlSugar; using System.IdentityModel.Tokens.Jwt; using System.Runtime.Serialization; using System.Security.Claims; using System.Text; namespace _24Hour.Controllers { /// /// 登录 /// [HiddenApi] [ApiController] [Route("api/APP")] public class LoginController : ControllerBase { private readonly IConfiguration _configuration; private readonly SqlSugarClient _db;//数据库 private readonly ILogger _logger;//日志 Result ret = new Result(); public LoginController(ILogger logger, SqlSugarClient db, IConfiguration configuration) { _logger = logger; _db = db; _configuration = configuration; } [HttpPost] [Route("Login")] public async Task Login(UserLogin login) { var Passmd5 = Md5.Encrypt32(login.Password).ToLower(); var date = await _db.Queryable().Where(q => q.IsDeleted == 0 && q.isdeactivate == 0 && q.phone == login.phone).FirstAsync(); if (date != null) { if (Passmd5 != date.Password) { ret.IsSucceed = false; ret.Message = "账号或则密码错误!"; return ret; } else if (date.usertype == 1 && date.audit == null) { ret.IsSucceed = false; ret.Message = "账号审核中!"; return ret; } else if (date.usertype == 1 && date.audit == 1) { ret.IsSucceed = false; ret.Message = $"账号审核未通过,原因:{date.describe}!"; return ret; } else if (date.usertype == 0 && date.becurrent == 1) { ret.IsSucceed = false; ret.Message = $"账号未授权无法登录,请联系管理员!"; return ret; } #region jwt生成token var tokenHandler = new JwtSecurityTokenHandler(); var claims =new Claim[] { new Claim(ClaimTypes.UserData,JsonConvert.SerializeObject(date)), }; var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_configuration.GetSection("JwtConfiguration:Jwtkey").Value)); var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); //Token var jwttoken = new JwtSecurityToken( issuer: "https://127.0.0.1:7246", audience: "https://127.0.0.1:7246", claims: claims, notBefore: DateTime.Now, expires: DateTime.Now.AddDays(1), signingCredentials: signingCredentials ); //var token = new JwtSecurityTokenHandler().CreateToken(jwttoken); var tokenString = new JwtSecurityTokenHandler().WriteToken(jwttoken); ret.result = new { name = date.name, sex = date.sex, phone = date.phone, photo = date.photo, duties = date.duties, unitCode = "", department = "", token = tokenString }; #endregion ret.IsSucceed = true; } else { ret.IsSucceed = false; ret.Message = "账号不存在!"; } return ret; } /// /// 微信授权登录 /// /// /// [HttpGet] [Route("WeChatLogin")] public async Task WeChatLogin(string openId) { var date = await _db.Queryable().Where(q => q.IsDeleted == 0 && q.isdeactivate == 0 && q.wechatId == openId).FirstAsync(); if (date != null) { if (date.usertype == 1 && date.audit == null) { ret.IsSucceed = false; ret.Message = "账号审核中!"; return ret; } else if (date.usertype == 1 && date.audit == 1) { ret.IsSucceed = false; ret.Message = $"账号审核未通过,原因:{date.describe}!"; return ret; } else if (date.usertype == 0 && date.becurrent == 1) { ret.IsSucceed = false; ret.Message = $"账号未授权无法登录,请联系管理员!"; return ret; } #region jwt生成token var tokenHandler = new JwtSecurityTokenHandler(); var claims = new Claim[] { new Claim(ClaimTypes.UserData,JsonConvert.SerializeObject(date)), }; var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_configuration.GetSection("JwtConfiguration:Jwtkey").Value)); var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); //Token var jwttoken = new JwtSecurityToken( issuer: "https://127.0.0.1:7246", audience: "https://127.0.0.1:7246", claims: claims, notBefore: DateTime.Now, expires: DateTime.Now.AddDays(1), signingCredentials: signingCredentials ); //var token = new JwtSecurityTokenHandler().CreateToken(jwttoken); var tokenString = new JwtSecurityTokenHandler().WriteToken(jwttoken); ret.result = new { name = date.name, sex = date.sex, phone = date.phone, photo = date.photo, duties = date.duties, unitCode = "", department = "", token = tokenString }; #endregion ret.IsSucceed = true; } else { ret.IsSucceed = false; ret.Message = "微信未授权!"; } return ret; } } public class UserLogin { [DataMember] public string phone { get; set; } /// /// 登录密码 /// [DataMember] public string Password { get; set; } } }