From b89fc7c55c756e71d5c5133a799430c294059be1 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期五, 15 九月 2023 08:47:53 +0800 Subject: [PATCH] 代码提交 --- Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/PwdFreeLoginTokenGranter.java | 50 ++++++++++++++++++++------------------------------ 1 files changed, 20 insertions(+), 30 deletions(-) diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/PwdFreeLoginTokenGranter.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/PwdFreeLoginTokenGranter.java index aab9a47..3d5f4e6 100644 --- a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/PwdFreeLoginTokenGranter.java +++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/PwdFreeLoginTokenGranter.java @@ -34,11 +34,12 @@ import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.WebUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.security.authentication.AbstractAuthenticationToken; -import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.core.env.Environment; +import org.springframework.security.authentication.*; import org.springframework.security.core.Authentication; import org.springframework.security.core.authority.AuthorityUtils; import org.springframework.security.oauth2.common.exceptions.InvalidGrantException; @@ -47,6 +48,7 @@ import org.springframework.security.oauth2.provider.token.AuthorizationServerTokenServices; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.LinkedHashMap; import java.util.Map; @@ -59,12 +61,11 @@ */ public class PwdFreeLoginTokenGranter extends AbstractTokenGranter { private static final String GRANT_TYPE = "passwordfree"; - private static final Integer AUTH_SUCCESS_CODE = 2000; - private final AuthenticationManager authenticationManager; + private final IUserClient userClient; - public PwdFreeLoginTokenGranter(AuthenticationManager authenticationManager, AuthorizationServerTokenServices tokenServices, ClientDetailsService clientDetailsService, OAuth2RequestFactory requestFactory) { + public PwdFreeLoginTokenGranter(AuthorizationServerTokenServices tokenServices, IUserClient userClient, ClientDetailsService clientDetailsService, OAuth2RequestFactory requestFactory) { super(tokenServices, clientDetailsService, requestFactory, GRANT_TYPE); - this.authenticationManager = authenticationManager; + this.userClient = userClient; } @Override @@ -77,32 +78,21 @@ Map<String, String> parameters = new LinkedHashMap<>(tokenRequest.getRequestParameters()); // 鏍规嵁鍙傛暟杩涜鑷畾涔夌殑鎺堟潈閫昏緫 - // 绀轰緥涓娇鐢ㄤ簡纭紪鐮佺殑鏂瑰紡楠岃瘉璐﹀彿鍜岀敓鎴愭巿鏉冧俊鎭� String userName = parameters.get("username"); - String password = parameters.get("password"); - // 缁勮鏁版嵁 - //UserOauth userOauth = Objects.requireNonNull(BeanUtil.copy(authUser, UserOauth.class)); - //userOauth.setTenantId(tenantId); - //userOauth.setUuid(authUser.getUuid()); - // 杩滅▼璋冪敤锛岃幏鍙栬璇佷俊鎭� - //R<UserInfo> result = userClient.userAuthInfo(userOauth); - BladeUserDetails bladeUserDetails = null; - // 閰嶇疆鐨勫瘑鐮侊紝鎵�鏈夎蛋鍏嶅瘑鎺ュ彛鐨勯兘璁剧疆缁熶竴鐨勫瘑鐮� - if ("password".equals(password)) { - // 鏋勫缓鎺堟潈淇℃伅 - //User user = result.getData().getUser(); - //Kv detail = result.getData().getDetail(); -// if (user == null || user.getId() == null) { -// throw new InvalidGrantException("social grant failure, user is null"); -// } -// bladeUserDetails = new BladeUserDetails(user.getId(), -// tenantId, result.getData().getOauthId(), userName, "webservice鍏嶅瘑鐧诲綍", "0", "0", "0", "0", Func.toStr(userOauth.getAvatar(), TokenUtil.DEFAULT_AVATAR), -// userName, AuthConstant.ENCRYPT + password, detail, true, true, true, true, -// AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles()))); - } else { - throw new InvalidGrantException("passwordfree grant failure, auth response is not success"); + R<UserInfo> result = userClient.userInfo(tenantId,userName); + BladeUserDetails bladeUserDetails; + + // 鏋勫缓鎺堟潈淇℃伅 + User user = result.getData().getUser(); + Kv detail = result.getData().getDetail(); + if (user == null || user.getId() == null) { + throw new InvalidGrantException("passwordfree grant failure, user is null"); } + bladeUserDetails = new BladeUserDetails(user.getId(), + tenantId, result.getData().getOauthId(), user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(result.getData().getRoles()), Func.toStr(user.getAvatar(), TokenUtil.DEFAULT_AVATAR), + user.getName(), AuthConstant.ENCRYPT + user.getPassword(), detail, true, true, true, true, + AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles()))); // 缁勮璁よ瘉鏁版嵁锛屽叧闂瘑鐮佹牎楠� Authentication userAuth = new UsernamePasswordAuthenticationToken(bladeUserDetails, null, bladeUserDetails.getAuthorities()); -- Gitblit v1.9.3