using Microsoft.AspNetCore.Mvc; using System.Net; using System.Net.Http.Headers; using Microsoft.Extensions.Hosting.Internal; using Microsoft.AspNetCore.Http.Extensions; using IStation.Untity; using Furion.DynamicApiController; using System.ComponentModel.DataAnnotations; using Mapster; using Microsoft.AspNetCore.Http; using Furion.DependencyInjection; using Microsoft.AspNetCore.Authorization; using Furion.DataEncryption; namespace IStation.Application { /// /// UserLogin /// [AllowAnonymous] [Route("User/UserLogin")] [ApiDescriptionSettings("User", Name = "用户登录", Order = 1000)] public class UserLogin_Controller : IDynamicApiController, ITransient { private readonly IHttpContextAccessor _httpContextAccessor; private readonly Service.UserLogin _service = new Service.UserLogin(); /// /// /// /// public UserLogin_Controller(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } /// /// 标准登录 /// [Route("FromStandard@V1.0")] [HttpPost] public UserLoginOutput FromStandard(UserLoginInput input) { var loginIp = HttpContextHelper.GetRemoteIpAddress(_httpContextAccessor.HttpContext.Request); var user = _service.Login (input.SoftType, input.SoftTag, input.LoginName, input.LoginPwd, loginIp, null, out Model.eLoginStatus loginStatus); var vm = new UserLoginOutput() { Status = loginStatus, User = user?.Adapt() }; if (loginStatus == Model.eLoginStatus.Success) { if (Settings.WebApi.EnableJwt) { // token var accessToken = JWTEncryption.Encrypt(new Dictionary() { { ClaimConst.UserID, user.ID }, // 用户标识 { ClaimConst.LoginName,user.LoginName }, // 登录名称 { ClaimConst.LoginPwd,user.LoginPwd }, // 登录密码 { ClaimConst.CorpID,user.CorpID }, // 客户标识 { ClaimConst.IsAdmin,user.IsAdmin } // 是否为管理员 }); // 设置Swagger自动登录 _httpContextAccessor.HttpContext.SigninToSwagger(accessToken); vm.Token = accessToken; } } return vm; } /// /// 标准客户登录 /// [Route("FromCorpStandard@V1.0")] [HttpPost] public UserLoginOutput FromCorpStandard(UserLoginCorpInput input) { var loginIp = HttpContextHelper.GetRemoteIpAddress(_httpContextAccessor.HttpContext.Request); var user = _service.LoginCorp (input.CorpID, input.SoftType, input.SoftTag, input.LoginName, input.LoginPwd, loginIp, null, out Model.eLoginStatus loginStatus); var vm = new UserLoginOutput() { Status = loginStatus, User = user?.Adapt() }; if (loginStatus == Model.eLoginStatus.Success) { if (Settings.WebApi.EnableJwt) { // token var accessToken = JWTEncryption.Encrypt(new Dictionary() { { ClaimConst.UserID, user.ID }, // 用户标识 { ClaimConst.LoginName,user.LoginName }, // 登录名称 { ClaimConst.LoginPwd,user.LoginPwd }, // 登录密码 { ClaimConst.CorpID,user.CorpID }, // 客户标识 { ClaimConst.IsAdmin,user.IsAdmin } // 是否为管理员 }); // 设置Swagger自动登录 _httpContextAccessor.HttpContext.SigninToSwagger(accessToken); vm.Token = accessToken; } } return vm; } /// /// 微信小程序客户登录 /// [Route("FromCorpWechatApplet@V1.0")] [HttpPost] public UserLoginOutput FromCorpWechatApplet(UserLoginCorpWechatAppletInput input) { var message = input.Adapt(); var loginIp = HttpContextHelper.GetRemoteIpAddress(_httpContextAccessor.HttpContext.Request); var user = _service.LoginCorp (input.CorpID, input.SoftType, input.SoftTag, input.LoginName, input.LoginPwd, loginIp, message.ToJson(), out Model.eLoginStatus loginStatus); var vm = new UserLoginOutput() { Status = loginStatus, User = user?.Adapt() }; if (loginStatus == Model.eLoginStatus.Success) { if (Settings.WebApi.EnableJwt) { // token var accessToken = JWTEncryption.Encrypt(new Dictionary() { { ClaimConst.UserID, user.ID }, // 用户标识 { ClaimConst.LoginName,user.LoginName }, // 登录名称 { ClaimConst.LoginPwd,user.LoginPwd }, // 登录密码 { ClaimConst.CorpID,user.CorpID }, // 客户标识 { ClaimConst.IsAdmin,user.IsAdmin } // 是否为管理员 }); // 设置Swagger自动登录 _httpContextAccessor.HttpContext.SigninToSwagger(accessToken); vm.Token = accessToken; } } return vm; } } }