From e6d04205e6a6632205192b491d2306ee9896e302 Mon Sep 17 00:00:00 2001 From: liquidjoo Date: Mon, 27 May 2019 17:13:12 +0900 Subject: [PATCH] auth params setting resolve --- .../CustomAuthEndpointsApprovalHandler.java | 4 ++ .../domain/social/UserArgumentResolver.java | 52 +++++++++++++++---- 2 files changed, 47 insertions(+), 9 deletions(-) create mode 100644 authorization-server/src/main/java/io/bluemoon/authorizationserver/config/handler/CustomAuthEndpointsApprovalHandler.java diff --git a/authorization-server/src/main/java/io/bluemoon/authorizationserver/config/handler/CustomAuthEndpointsApprovalHandler.java b/authorization-server/src/main/java/io/bluemoon/authorizationserver/config/handler/CustomAuthEndpointsApprovalHandler.java new file mode 100644 index 0000000..2eff716 --- /dev/null +++ b/authorization-server/src/main/java/io/bluemoon/authorizationserver/config/handler/CustomAuthEndpointsApprovalHandler.java @@ -0,0 +1,4 @@ +package io.bluemoon.authorizationserver.config.handler; + +public class CustomAuthEndpointsApprovalHandler { +} diff --git a/authorization-server/src/main/java/io/bluemoon/authorizationserver/domain/social/UserArgumentResolver.java b/authorization-server/src/main/java/io/bluemoon/authorizationserver/domain/social/UserArgumentResolver.java index 13eb8e7..274e63f 100644 --- a/authorization-server/src/main/java/io/bluemoon/authorizationserver/domain/social/UserArgumentResolver.java +++ b/authorization-server/src/main/java/io/bluemoon/authorizationserver/domain/social/UserArgumentResolver.java @@ -62,7 +62,9 @@ public class UserArgumentResolver implements HandlerMethodArgumentResolver { // User convertUser = convertUser(String.valueOf(authentication.getAuthorities().toArray()[0]), map); OAuth2AuthenticationToken authentication = (OAuth2AuthenticationToken) SecurityContextHolder.getContext().getAuthentication(); Map map = authentication.getPrincipal().getAttributes(); + System.out.println(map.toString()); User convertUser = convertUser(authentication.getAuthorizedClientRegistrationId(), map); + System.out.println(convertUser.toString()); user = userRepository.findByEmail(convertUser.getEmail()); if (user == null) { @@ -98,14 +100,35 @@ public class UserArgumentResolver implements HandlerMethodArgumentResolver { * @return */ private User getModernUser(SocialType socialType, Map map) { - return User.builder() - .name(String.valueOf(map.get("name"))) - .email(String.valueOf(map.get("email"))) - .principal(String.valueOf(map.get("id"))) - .socialType(socialType) - .createdAt(LocalDateTime.now()) - .updatedAt(LocalDateTime.now()) - .build(); + + if (socialType.getVaule().equals("facebook")) { + return User.builder() + .name(String.valueOf(map.get("name"))) + .email(String.valueOf(map.get("email"))) + .principal(String.valueOf(map.get("id"))) + .socialType(socialType) + .createdAt(LocalDateTime.now()) + .updatedAt(LocalDateTime.now()) + .build(); + } else if (socialType.getVaule().equals("google")) { + return User.builder() + .name(String.valueOf(map.get("name"))) + .email(String.valueOf(map.get("email"))) + .principal(String.valueOf(map.get("sub"))) + .socialType(socialType) + .createdAt(LocalDateTime.now()) + .updatedAt(LocalDateTime.now()) + .build(); + } else { + return User.builder() + .name(String.valueOf(map.get("name"))) + .email(String.valueOf(map.get("email"))) + .principal(String.valueOf(map.get("id"))) + .socialType(socialType) + .createdAt(LocalDateTime.now()) + .updatedAt(LocalDateTime.now()) + .build(); + } } /** @@ -116,10 +139,21 @@ public class UserArgumentResolver implements HandlerMethodArgumentResolver { * @param map */ private void setRoleIfNotSame(User user, OAuth2AuthenticationToken authentication, Map map) { + Map principalMap = new HashMap<>(); + if (user.getSocialType().getVaule().equals("google")) { + principalMap.put("id", map.get("sub")); + principalMap.put("name", map.get("name")); + principalMap.put("email", map.get("email")); + } else { + principalMap = map; + } + + // spring security authentiaction params setting + // 후.. 찾기 힘들었다.. if (!authentication.getAuthorities().contains( new SimpleGrantedAuthority(user.getSocialType().getRoleType()))) { SecurityContextHolder.getContext().setAuthentication( - new UsernamePasswordAuthenticationToken(map, "N/A", AuthorityUtils.createAuthorityList(user.getSocialType().getRoleType())) + new UsernamePasswordAuthenticationToken(principalMap, "N/A", AuthorityUtils.createAuthorityList(user.getSocialType().getRoleType())) ); } }