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().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; } }