You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
189 lines
7.0 KiB
189 lines
7.0 KiB
using Elight.Entity; |
|
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 |
|
{ |
|
/// <summary> |
|
/// 登录 |
|
/// </summary> |
|
[ApiController] |
|
[Route("api/Login")] |
|
public class LoginController : ControllerBase |
|
{ |
|
private readonly IConfiguration _configuration; |
|
private readonly SqlSugarClient _db;//数据库 |
|
private readonly ILogger<LoginController> _logger;//日志 |
|
Result ret = new Result(); |
|
public LoginController(ILogger<LoginController> logger, SqlSugarClient db, IConfiguration configuration) |
|
{ |
|
_logger = logger; |
|
_db = db; |
|
_configuration = configuration; |
|
} |
|
[HttpPost] |
|
[Route("Login")] |
|
public async Task<Result> Login(UserLogin login) |
|
{ |
|
var Passmd5 = Md5.Encrypt32(login.Password).ToLower(); |
|
var date = await _db.Queryable<App_Sys_UserModel>().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; |
|
} |
|
|
|
/// <summary> |
|
/// 微信授权登录 |
|
/// </summary> |
|
/// <param name="openId"></param> |
|
/// <returns></returns> |
|
[HttpGet] |
|
[Route("WeChatLogin")] |
|
public async Task<Result> WeChatLogin(string openId) |
|
{ |
|
var date = await _db.Queryable<App_Sys_UserModel>().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; } |
|
/// <summary> |
|
/// 登录密码 |
|
/// </summary> |
|
[DataMember] |
|
public string Password { get; set; } |
|
} |
|
} |