yangys
2024-03-27 e48aa2ac8dea1be5db11c63edf0b912c4ad5ce65
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package com.qianwen.smartman.modules.auth.granter;
 
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.jsonwebtoken.Claims;
import java.lang.invoke.SerializedLambda;
import com.qianwen.core.secure.utils.AuthUtil;
import com.qianwen.core.tool.support.Kv;
import com.qianwen.core.tool.utils.Func;
import com.qianwen.core.tool.utils.StringUtil;
import com.qianwen.smartman.modules.auth.provider.ITokenGranter;
import com.qianwen.smartman.modules.auth.provider.TokenParameter;
import com.qianwen.smartman.modules.cps.entity.Employee;
import com.qianwen.smartman.modules.cps.service.IEmployeeService;
import com.qianwen.smartman.modules.system.entity.OauthLoginEmployee;
import com.qianwen.smartman.modules.system.entity.User;
import com.qianwen.smartman.modules.system.entity.UserInfo;
import com.qianwen.smartman.modules.system.service.IRoleService;
import com.qianwen.smartman.modules.system.service.IUserOauthService;
import com.qianwen.smartman.modules.system.service.IUserService;
import org.springframework.stereotype.Component;
 
@Component
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/auth/granter/EmployeeTokenGranter.class */
public class EmployeeTokenGranter implements ITokenGranter {
    public static final String GRANT_TYPE = "employee";
    private final IEmployeeService employeeService;
    private final IUserService userService;
    private final IRoleService roleService;
    private final IUserOauthService oauthService;
 
    public EmployeeTokenGranter(IEmployeeService employeeService, IUserService userService, IRoleService roleService, IUserOauthService oauthService) {
        this.employeeService = employeeService;
        this.userService = userService;
        this.roleService = roleService;
        this.oauthService = oauthService;
    }
 
    @Override // org.springblade.modules.auth.provider.ITokenGranter
    public UserInfo grant(TokenParameter tokenParameter) {
        String username = tokenParameter.getArgs().getStr("username");
        String password = tokenParameter.getArgs().getStr(PasswordTokenGranter.GRANT_TYPE);
        String employeeId = tokenParameter.getArgs().getStr("employeeId");
        String refreshToken = tokenParameter.getArgs().getStr("refreshToken");
        UserInfo userInfo = new UserInfo();
        
        if (StringUtil.isNotBlank(refreshToken)) {
            Claims claims = AuthUtil.parseJWT(refreshToken);
            if (Func.isEmpty(claims))
              return null; 
            Employee employee = (Employee)this.employeeService.getById(Long.valueOf(Func.toLong(claims.get("user_id"))));
            User user = buildUser(employee);
            Kv param = Kv.create();
            param.put("rootPath", employee.getJobNumber());
            userInfo.setDetail(param);
            userInfo.setUser(user);
          } else {
            Employee employee = null;
            if (Func.isNotEmpty(employeeId)) {
              employee = this.employeeService.getById(employeeId);
            } else if (Func.isNoneBlank(new CharSequence[] { username, password })) {
              employee = this.employeeService.getOne(new QueryWrapper<Employee>().lambda()
                  .eq(Employee::getJobNumber, username)
                  .eq(Employee::getPinCode, password));
            } 
            if (null == employee)
              return null; 
            User user = buildUser(employee);
            userInfo.setUser(user);
          } 
          return userInfo;
          
        /*
        if (StringUtil.isNotBlank(refreshToken)) {
            Claims claims = AuthUtil.parseJWT(refreshToken);
            if (Func.isEmpty(claims)) {
                return null;
            }
            Employee employee = (Employee) this.employeeService.getById(Long.valueOf(Func.toLong(claims.get("user_id"))));
            User user = buildUser(employee);
            Kv param = Kv.create();
            param.put("rootPath", employee.getJobNumber());
            userInfo.setDetail(param);
            userInfo.setUser(user);
        } else {
            Employee employee2 = null;
            if (Func.isNotEmpty(employeeId)) {
                employee2 = (Employee) this.employeeService.getById(employeeId);
            } else if (Func.isNoneBlank(new CharSequence[]{username, password})) {
                employee2 = (Employee) this.employeeService.getOne((Wrapper) ((LambdaQueryWrapper) new QueryWrapper().lambda().eq((v0) -> {
                    return v0.getJobNumber();
                }, username)).eq((v0) -> {
                    return v0.getPinCode();
                }, password));
            }
            if (null == employee2) {
                return null;
            }
            User user2 = buildUser(employee2);
            userInfo.setUser(user2);
        }
        return userInfo;
        */
    }
 
    public User buildUser(Employee employee) {
        User systemUser;
        OauthLoginEmployee user = new OauthLoginEmployee();
        user.setId(employee.getId());
        user.setAccount(employee.getJobNumber());
        user.setTenantId("000000");
        user.setRealName(employee.getName());
        user.setDeptId(employee.getDeptId());
        user.setStatus(employee.getStatus());
        user.setPostId(employee.getPostId());
        user.setEmployeeId(employee.getId());
        if (Func.isNotEmpty(employee.getUserId()) && (systemUser = (User) this.userService.getById(employee.getUserId())) != null) {
            user.setSystemAccount(systemUser.getAccount());
        }
        return user;
    }
}