Mustache, Bootstrap, Ajax, Spring Boot, Spring Security, Spring Data JPA, JPQL, MySQL
이 프로젝트는 게시판을 통해 펫을 돌봐줄 사람과 돌봄이 필요한 사람 매칭 기능을 제공하고 있고 펫과 관련된 뉴스나 정보를 제공하고, 세션을 이용한 로그인&oauth2를 이용한 로그인을 제공하고 있습니다.
//CustomOAuth2UserService 일부 발쵀
@Override
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
...
return processOAuth2User(oAuth2Response);
}
private OAuth2User processOAuth2User(OAuth2Response oAuth2Response) {
Optional<UserEntity> userEntity = userRepository.findByEmail(oAuth2Response.getEmail());
//이미 등록된 사용자인 경우
if (userRepository.existsByEmail(oAuth2Response.getEmail())) {
try {
throw new Exception();
} catch (Exception e) {
log.warn("이미 존재하는 아이디입니다.");
}
return new CustomOAuth2User(oAuth2Response, userEntity.get());
//등록이 안된 사용자인 경우
} else {
return new CustomOAuth2User(oAuth2Response, registerUser(oAuth2Response));
}
}
private UserEntity registerUser(OAuth2Response oAuth2Response) {
return userRepository.save(UserEntity.builder()
.username(oAuth2Response.getName())
.email(oAuth2Response.getEmail())
.joinProvider(oAuth2Response.getProvider())
.role("ROLE_USER")
.build());
}