namespace Yw.Dto
|
{
|
/// <summary>
|
/// 用户登录辅助类
|
/// </summary>
|
public class UserLoginHelper
|
{
|
|
/// <summary>
|
/// 生成输出
|
/// </summary>
|
public static UserLoginOutput Generate
|
(
|
eLoginStatus loginStatus,
|
Tuple<Model.UserLoginType, Model.UserLoginAccount, Model.User> tuple,
|
IHttpContextAccessor httpContextAccessor
|
)
|
{
|
var vm = new UserLoginOutput();
|
vm.Status = loginStatus;
|
|
if (loginStatus == eLoginStatus.Success)
|
{
|
vm.User = new UserLoginUserOutput(tuple.Item3, tuple.Item2, tuple.Item1, null);
|
// token
|
var accessToken = JWTEncryption.Encrypt(new Dictionary<string, object>()
|
{
|
{ ClaimConst.CorpID,vm.User.Corpration==null?0:vm.User.Corpration.ID }, // 登录客户 id
|
{ ClaimConst.UserID,vm.User.ID }, // 登录用户 id
|
{ ClaimConst.AdminType,(int)vm.User.AdminType},//登录权限类型
|
{ ClaimConst.UserTag,vm.User.Tag},//登录用户tag
|
{ ClaimConst.LoginAccountID,vm.User.LoginAccount.ID }, // 登录账户 id
|
{ ClaimConst.LoginTypeID, vm.User.LoginAccount.LoginType.ID }, // 登录类型 id
|
{ ClaimConst.ProjectID, 0 }, // 目标项目 id
|
{ ClaimConst.SoftwareID, 0 }, // 目标软件 id
|
{ ClaimConst.UserName,vm.User.Name}//用户名称
|
}, ConfigHelper.AccessTokenExpire);
|
//刷新token
|
var refreshToken = JWTEncryption.GenerateRefreshToken(accessToken, ConfigHelper.RefreshTokenExpire);
|
// 设置Swagger自动登录
|
httpContextAccessor.HttpContext.SigninToSwagger(accessToken);
|
vm.Token = accessToken;
|
vm.AccessToken = accessToken;
|
vm.RefreshToken = refreshToken;
|
}
|
|
return vm;
|
}
|
|
/// <summary>
|
/// 生成输出
|
/// </summary>
|
public static UserLoginOutput Generate
|
(
|
eLoginStatus loginStatus,
|
Tuple<Model.UserLoginType, Model.UserLoginAccount, Model.User, Model.Corpration, Model.Software, Model.Project, Model.Product, Tuple<Model.Corpration>> tuple,
|
IHttpContextAccessor httpContextAccessor
|
)
|
{
|
var vm = new UserLoginOutput();
|
vm.Status = loginStatus;
|
|
if (loginStatus == eLoginStatus.Success)
|
{
|
vm.User = new UserLoginUserOutput(tuple.Item3, tuple.Item2, tuple.Item1, tuple.Item4);
|
vm.Software = new UserLoginTargetSoftwareOutput(tuple.Item5, tuple.Item6, tuple.Item7, tuple.Rest.Item1);
|
// token
|
var accessToken = JWTEncryption.Encrypt(new Dictionary<string, object>()
|
{
|
{ ClaimConst.CorpID,vm.User.Corpration==null?0:vm.User.Corpration.ID }, // 登录用户客户 id
|
{ ClaimConst.UserID,vm.User.ID }, // 登录用户 id
|
{ ClaimConst.AdminType,(int)vm.User.AdminType},//登录用户权限类型
|
{ ClaimConst.UserTag,vm.User.Tag},//登录用户tag
|
{ ClaimConst.LoginAccountID,vm.User.LoginAccount.ID }, // 登录账户 id
|
{ ClaimConst.LoginTypeID, vm.User.LoginAccount.LoginType.ID }, // 登录类型 id
|
{ ClaimConst.ProjectID, vm.Software.Project.ID }, // 目标项目 id
|
{ ClaimConst.SoftwareID, vm.Software.ID }, // 目标软件 id
|
{ ClaimConst.UserName,vm.User.Name}//用户名称
|
}, ConfigHelper.AccessTokenExpire);
|
//刷新token
|
var refreshToken = JWTEncryption.GenerateRefreshToken(accessToken, ConfigHelper.RefreshTokenExpire);
|
// 设置Swagger自动登录
|
httpContextAccessor.HttpContext.SigninToSwagger(accessToken);
|
vm.Token = accessToken;
|
vm.AccessToken = accessToken;
|
vm.RefreshToken = refreshToken;
|
}
|
|
return vm;
|
}
|
|
|
|
}
|
}
|