ningshuxia
2024-05-27 f51ccee7e76f598c1f718190d216f96b5ea1ca46
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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;
        }
 
 
 
    }
}