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