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 ApplicationViewModel.UserLogin 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 ApplicationViewModel.UserLogin()
{
Status = loginStatus,
User = user?.Adapt()
};
if (loginStatus == Model.eLoginStatus.Success)
{
if (user != null)
{
vm.User = new ApplicationViewModel.UserDto4Wechat();
vm.User.LoginName = user.LoginName;
vm.User.EmployeeID = user.ID;
vm.User.ID = user.ID;
vm.User.LastLoginWxUserCode = "";
vm.User.CorpID = user.CorpID;
vm.User.RealName = user.RealName;
vm.User.Telphone = user.Mobile;
}
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;
}
}
}
namespace IStation.ApplicationViewModel
{
///
/// 用户小程序登录输出
///
public class UserLogin
{
///
/// 状态
///
public Model.eLoginStatus Status { get; set; }
///
/// 用户
///
public UserDto4Wechat User { get; set; }
///
/// 令牌
///
public string Token { get; set; }
}
///
/// 小程序
///
public class UserDto4Wechat
{
///
///
///
public string LastLoginWxUserCode { get; set; }
///
/// 标识
///
public long EmployeeID { get; set; }
///
/// 标识
///
public long ID { get; set; }
///
/// 客户标识
///
public long CorpID { get; set; }
///
/// 登录名称
///
public string LoginName { get; set; }
///
/// 真实名称
///
public string RealName { get; set; }
///
/// 手机号码
///
public string Telphone { get; set; }
}
}