package com.qianwen.smartman.modules.auth.endpoint;
|
|
import com.github.xiaoymin.knife4j.annotations.ApiSort;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import com.qianwen.smartman.common.utils.MessageUtils;
|
import com.qianwen.core.log.annotation.ApiLog;
|
import com.qianwen.core.tenant.annotation.NonDS;
|
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.granter.PasswordTokenGranter;
|
import com.qianwen.smartman.modules.auth.granter.RefreshTokenGranter;
|
import com.qianwen.smartman.modules.auth.provider.ITokenGranter;
|
import com.qianwen.smartman.modules.auth.provider.TokenGranterBuilder;
|
import com.qianwen.smartman.modules.auth.provider.TokenParameter;
|
import com.qianwen.smartman.modules.auth.utils.TokenUtil;
|
import com.qianwen.smartman.modules.system.entity.UserInfo;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
|
@RequestMapping({"blade-auth"})
|
@Api(value = "资源授权认证", tags = {"授权接口"})
|
@RestController
|
@NonDS
|
@ApiSort(1)
|
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/auth/endpoint/ResourceTokenEndPoint.class */
|
public class ResourceTokenEndPoint {
|
@PostMapping({"/resource/{resourceType}/token"})
|
@ApiLog("登录资源验证")
|
@ApiOperation(value = "获取认证令牌", notes = "资源类型:machine,employee; 身份; PIN码")
|
public Kv token(@PathVariable("resourceType") @ApiParam(value = "资源类型", required = true) String resourceType, @RequestParam(required = false) @ApiParam(value = "账号", required = true) String username, @RequestParam(required = false) @ApiParam(value = "PIN码", required = true) String password) {
|
boolean z;
|
Kv authInfo = Kv.create();
|
String refreshToken = WebUtil.getRequest().getParameter(RefreshTokenGranter.GRANT_TYPE);
|
String grantType = WebUtil.getRequest().getParameter("grant_type");
|
if (Func.isEmpty(grantType)) {
|
z = false;
|
} else {
|
z = grantType.equals(RefreshTokenGranter.GRANT_TYPE);
|
}
|
boolean isRefreshToken = z;
|
TokenParameter tokenParameter = new TokenParameter();
|
tokenParameter.getArgs().set("username", username).set(PasswordTokenGranter.GRANT_TYPE, password).set("refreshToken", refreshToken).set("isRefreshToken", Boolean.valueOf(isRefreshToken)).set("grantType", resourceType);
|
ITokenGranter granter = TokenGranterBuilder.getGranter(resourceType);
|
UserInfo userInfo = granter.grant(tokenParameter);
|
if (null == userInfo || null == userInfo.getUser()) {
|
return authInfo.set("error_code", 400).set("error_description", MessageUtils.message(TokenUtil.RESOURCE_NOT_FOUND, new Object[0]));
|
}
|
int errorCode = 200;
|
String message = "";
|
if (null == userInfo.getUser().getStatus() || 1 != userInfo.getUser().getStatus().intValue()) {
|
errorCode = 400;
|
message = MessageUtils.message(TokenUtil.USER_BLOCKED, new Object[0]);
|
}
|
if (200 != errorCode) {
|
return authInfo.set("error_code", Integer.valueOf(errorCode)).set("error_description", message);
|
}
|
return TokenUtil.createAuthInfo(userInfo);
|
}
|
}
|