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;
}
}
}