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