refactor: login by email (loginId kept as internal identifier)

This commit is contained in:
pray4skylark
2026-06-08 15:48:22 +09:00
parent 4a0c3ed278
commit ca444a3b4f
10 changed files with 34 additions and 31 deletions
@@ -34,11 +34,11 @@ public class CurrentUserArgumentResolver implements HandlerMethodArgumentResolve
log.warn("No authentication found");
return null;
}
String loginId = authentication.getName();
log.info("Resolving current user for loginId: {}", loginId);
Employee emp = authService.getEmployeeByLoginId(loginId);
String email = authentication.getName();
log.info("Resolving current user for email: {}", email);
Employee emp = authService.getEmployeeByLoginId(email);
if (emp == null) {
log.warn("Employee not found for loginId: {}", loginId);
log.warn("Employee not found for email: {}", email);
return null;
}
log.info("Found employee: empId={}, name={}", emp.getEmpId(), emp.getName());
@@ -5,8 +5,8 @@ import com.srsystem.entity.enums.RoleCode;
import jakarta.validation.constraints.NotBlank;
public record LoginRequest(
@NotBlank(message = "로그인 ID 는 필수입니다")
String loginId,
@NotBlank(message = "이메일은 필수입니다")
String email,
@NotBlank(message = "비밀번호는 필수입니다")
String password
) {
@@ -16,6 +16,7 @@ import java.util.Optional;
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
@Query("SELECT e FROM Employee e WHERE e.loginId = :loginId")
Optional<Employee> findByLoginId(@Param("loginId") String loginId);
Optional<Employee> findByEmail(String email);
List<Employee> findByNameContainingIgnoreCase(String name);
Page<Employee> findByEmpStatus(EmpStatus status, Pageable pageable);
}
@@ -27,15 +27,15 @@ public class AuthService {
@Transactional
public LoginResponse login(LoginRequest request) {
Employee employee = employeeRepository.findByLoginId(request.loginId())
Employee employee = employeeRepository.findByEmail(request.email())
.orElseThrow(() -> new BusinessException(ErrorCode.INVALID_CREDENTIALS));
if (!passwordEncoder.matches(request.password(), employee.getPassword())) {
throw new BusinessException(ErrorCode.INVALID_CREDENTIALS);
}
String accessToken = jwtTokenProvider.generateAccessToken(employee.getLoginId(), employee.getRoleCode().name());
String refreshToken = jwtTokenProvider.generateRefreshToken(employee.getLoginId());
String accessToken = jwtTokenProvider.generateAccessToken(employee.getEmail(), employee.getRoleCode().name());
String refreshToken = jwtTokenProvider.generateRefreshToken(employee.getEmail());
EmployeeSummary summary = employeeService.toSummary(employee);
@@ -48,12 +48,12 @@ public class AuthService {
throw new BusinessException(ErrorCode.INVALID_CREDENTIALS);
}
String loginId = jwtTokenProvider.getLoginId(refreshToken);
Employee employee = employeeRepository.findByLoginId(loginId)
String email = jwtTokenProvider.getLoginId(refreshToken);
Employee employee = employeeRepository.findByEmail(email)
.orElseThrow(() -> new BusinessException(ErrorCode.EMPLOYEE_NOT_FOUND));
String newAccessToken = jwtTokenProvider.generateAccessToken(employee.getLoginId(), employee.getRoleCode().name());
String newRefreshToken = jwtTokenProvider.generateRefreshToken(employee.getLoginId());
String newAccessToken = jwtTokenProvider.generateAccessToken(employee.getEmail(), employee.getRoleCode().name());
String newRefreshToken = jwtTokenProvider.generateRefreshToken(employee.getEmail());
EmployeeSummary summary = employeeService.toSummary(employee);
@@ -61,8 +61,8 @@ public class AuthService {
}
@Transactional(readOnly = true)
public Employee getEmployeeByLoginId(String loginId) {
return employeeRepository.findByLoginId(loginId)
public Employee getEmployeeByLoginId(String email) {
return employeeRepository.findByEmail(email)
.orElseThrow(() -> new BusinessException(ErrorCode.EMPLOYEE_NOT_FOUND));
}
}
@@ -76,10 +76,9 @@ public class EmployeeService {
@Transactional
public Employee create(Employee employee) {
if (employeeRepository.findByLoginId(employee.getLoginId()).isPresent()) {
if (employee.getEmail() != null && employeeRepository.findByEmail(employee.getEmail()).isPresent()) {
throw new BusinessException(ErrorCode.DUPLICATE_LOGIN_ID);
}
if (employee.getRoleCode() == null) employee.setRoleCode(RoleCode.EMPLOYEE);
if (employee.getEmpStatus() == null) employee.setEmpStatus(EmpStatus.ACTIVE);
if (employee.getDispatchStatus() == null) employee.setDispatchStatus(DispatchStatus.WAITING);
@@ -0,0 +1,3 @@
ALTER TABLE tb_employee ADD CONSTRAINT uq_employee_email UNIQUE (email);
UPDATE tb_employee SET email = CONCAT(login_id, '@sr-system.com') WHERE email IS NULL OR email = '';