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
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.smartman.common.constant.CommonConstant;
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.WebUtil;
import com.qianwen.smartman.modules.auth.provider.ITokenGranter;
import com.qianwen.smartman.modules.auth.provider.TokenParameter;
import com.qianwen.smartman.modules.cps.entity.Machine;
import com.qianwen.smartman.modules.cps.service.IMachineService;
import com.qianwen.smartman.modules.system.entity.User;
import com.qianwen.smartman.modules.system.entity.UserInfo;
import org.springframework.stereotype.Component;
 
@Component
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/auth/granter/MachineTokenGranter.class */
public class MachineTokenGranter implements ITokenGranter {
    public static final String GRANT_TYPE = "machine";
    private final IMachineService machineService;
 
    public MachineTokenGranter(IMachineService machineService) {
        this.machineService = machineService;
    }
 
    @Override // org.springblade.modules.auth.provider.ITokenGranter
    public UserInfo grant(TokenParameter tokenParameter) {
        WebUtil.getRequest();
        String username = tokenParameter.getArgs().getStr("username");
        String password = tokenParameter.getArgs().getStr(PasswordTokenGranter.GRANT_TYPE);
        String refreshToken = tokenParameter.getArgs().getStr("refreshToken");
        boolean isRefreshToken = tokenParameter.getArgs().getBool("isRefreshToken").booleanValue();
        UserInfo userInfo = new UserInfo();
        
        if (isRefreshToken) {
            Claims claims = AuthUtil.parseJWT(refreshToken);
            if (Func.isEmpty(claims))
              return null; 
            Machine machine = (Machine)this.machineService.getById(Long.valueOf(Func.toLong(claims.get("user_id"))));
            User user = buildUser(machine);
            Kv param = Kv.create();
            param.put("rootPath", machine.getShortCode());
            userInfo.setDetail(param);
            userInfo.setUser(user);
          } else if (Func.isNoneBlank(new CharSequence[] { username, password })) {
            Machine machine = (Machine)this.machineService.getOne(new QueryWrapper<Machine>()
                .lambda()
                .eq(Machine::getShortCode, username)
                .eq(Machine::getPinCode, password)
                .eq(Machine::getStatus, CommonConstant.ENABLE));
            if (null == machine)
              return null; 
            User user = buildUser(machine);
            Kv param = Kv.create();
            param.put("rootPath", machine.getShortCode());
            userInfo.setDetail(param);
            userInfo.setUser(user);
          } 
          return userInfo;
          
        /*
        if (isRefreshToken) {
            Claims claims = AuthUtil.parseJWT(refreshToken);
            if (Func.isEmpty(claims)) {
                return null;
            }
            Machine machine = (Machine) this.machineService.getById(Long.valueOf(Func.toLong(claims.get("user_id"))));
            User user = buildUser(machine);
            Kv param = Kv.create();
            param.put("rootPath", machine.getShortCode());
            userInfo.setDetail(param);
            userInfo.setUser(user);
        } else if (Func.isNoneBlank(new CharSequence[]{username, password})) {
            Machine machine2 = (Machine) this.machineService.getOne((Wrapper) ((LambdaQueryWrapper) ((LambdaQueryWrapper) new QueryWrapper().lambda().eq((v0) -> {
                return v0.getShortCode();
            }, username)).eq((v0) -> {
                return v0.getPinCode();
            }, password)).eq((v0) -> {
                return v0.getStatus();
            }, CommonConstant.ENABLE));
            if (null == machine2) {
                return null;
            }
            User user2 = buildUser(machine2);
            Kv param2 = Kv.create();
            param2.put("rootPath", machine2.getShortCode());
            userInfo.setDetail(param2);
            userInfo.setUser(user2);
        }
        return userInfo;
        */
    }
 
    private User buildUser(Machine machine) {
        User user = new User();
        user.setId(machine.getId());
        user.setAccount(machine.getShortCode());
        user.setTenantId("000000");
        user.setDeptId(machine.getCreateDept().toString());
        user.setRealName(machine.getMachineName());
        user.setStatus(machine.getStatus());
        return user;
    }
}