Skip to content

Commit

Permalink
feat: 로그인 시 프로필 등록되지 않은 상태이면 isNewUser 응답 필드값 true 반환
Browse files Browse the repository at this point in the history
  • Loading branch information
jkde7721 committed Mar 17, 2023
1 parent c73a6b9 commit 97a86b5
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@

import java.util.Optional;

public interface UserRepository extends JpaRepository<User, Long> {
public interface UserRepository extends JpaRepository<User, Long>, UserRepositoryCustom {
Optional<User> findByProviderIdAndRole(String providerId, Role role);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.project.coalba.domain.auth.repository;

public interface UserRepositoryCustom {
Boolean existsByProfile(Long userId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.project.coalba.domain.auth.repository.impl;

import com.project.coalba.domain.auth.entity.enums.Role;
import com.project.coalba.domain.auth.repository.UserRepositoryCustom;
import com.querydsl.jpa.JPAExpressions;
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;

import static com.project.coalba.domain.auth.entity.QUser.*;
import static com.project.coalba.domain.profile.entity.QBoss.*;
import static com.project.coalba.domain.profile.entity.QStaff.*;

@RequiredArgsConstructor
public class UserRepositoryImpl implements UserRepositoryCustom {
private final JPAQueryFactory queryFactory;

@Override
public Boolean existsByProfile(Long userId) {
return queryFactory.selectFrom(user)
.where(user.id.eq(userId),
user.role.eq(Role.BOSS).and(
JPAExpressions.selectFrom(boss)
.where(boss.user.id.eq(userId))
.exists()
).or(user.role.eq(Role.STAFF).and(
JPAExpressions.selectFrom(staff)
.where(staff.user.id.eq(userId))
.exists()
)
)
)
.fetchOne() != null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,13 @@ public class AuthService {
@Transactional
public AuthResponse login(SocialInfo socialInfo, Role role) {
Optional<User> userOptional = getSubscribedUser(socialInfo.getProviderId(), role);
boolean isNewUser = userOptional.isEmpty();

User loginUser;
if (isNewUser) loginUser = joinUser(socialInfo, role);
else loginUser = updateUser(userOptional.get(), socialInfo);
User loginUser = userOptional.map(user -> updateUser(user, socialInfo))
.orElseGet(() -> joinUser(socialInfo, role));

String accessToken = tokenManager.createAccessToken(loginUser.getProviderId(), loginUser.getId());
String refreshToken = issueRefreshToken(getUserRefreshToken(loginUser.getId()).orElse(null));
manageRefreshToken(loginUser, refreshToken);
return new AuthResponse(accessToken, refreshToken, isNewUser);
return new AuthResponse(accessToken, refreshToken, isNewUser(loginUser.getId()));
}

@Transactional
Expand Down Expand Up @@ -70,6 +67,10 @@ private User updateUser(User user, SocialInfo socialInfo) {
return user;
}

private Boolean isNewUser(Long userId) {
return userRepository.existsByProfile(userId);
}

private void manageRefreshToken(User loginUser, String refreshToken) {
Optional<UserRefreshToken> userRefreshTokenOptional = getUserRefreshToken(loginUser.getId());
userRefreshTokenOptional.ifPresentOrElse(userRefreshToken -> userRefreshToken.updateToken(refreshToken),
Expand Down

0 comments on commit 97a86b5

Please sign in to comment.