Skip to content

Commit

Permalink
Merge pull request #91 from Leets-Official/refactor/#88/소셜-로그인-수정
Browse files Browse the repository at this point in the history
Refactor #91 소셜 로그인 연동 기능 구현
  • Loading branch information
hyxklee authored Dec 23, 2024
2 parents 2807940 + db51d08 commit 1c79845
Show file tree
Hide file tree
Showing 16 changed files with 202 additions and 115 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,40 +6,49 @@

public class UserRequestDto {

public record login (
public record Login(
@NotBlank String authCode
){}
) {
}

public record SignUp (
public record SignUp(
@NotBlank String name,
@Email @NotBlank String email,
@NotBlank String password,
@NotBlank String studentId,
@NotBlank String tel,
@NotBlank String password,
@NotBlank String studentId,
@NotBlank String tel,
@NotNull String position,
@NotNull String department,
@NotNull Integer cardinal
) {}
public record Register (
@NotNull String department,
@NotNull Integer cardinal
) {
}

public record Register(
@NotNull Long kakaoId,
@NotBlank String name,
@NotBlank String studentId,
@NotNull String department,
@NotBlank String tel,
@NotNull Integer cardinal,
@NotBlank String studentId,
@NotNull String department,
@NotBlank String tel,
@NotNull Integer cardinal,
@NotNull String position
) {}
) {
}

public record Update (
@NotBlank String name,
public record Update(
@NotBlank String name,
@Email @NotBlank String email,
@NotBlank String password,
@NotBlank String studentId,
@NotBlank String tel,
@NotNull String department
) {}

public record refreshRequest(
@Email String email
){}
@NotBlank String password,
@NotBlank String studentId,
@NotBlank String tel,
@NotNull String department
) {
}

public record NormalLogin(
@NotBlank String email,
@NotBlank String passWord,
@NotNull Long kakaoId
) {
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ public class UserResponseDto {

public record SocialLoginResponse(
Long id,
Long kakaoId,
LoginStatus status,
String accessToken,
String refreshToken
Expand All @@ -30,12 +31,15 @@ public record Response(
Role role
) {
}

public record SummaryResponse(
Integer id,
String name,
List<Integer> cardinals,
Position position
) {}
) {
}

public record AdminResponse(
Integer id,
String name,
Expand All @@ -55,6 +59,7 @@ public record AdminResponse(
LocalDateTime modifiedAt
) {
}

public record UserResponse(
Integer id,
String name,
Expand All @@ -65,4 +70,9 @@ public record UserResponse(
Position position
) {
}

public record SocialAuthResponse(
Long kakaoId
) {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package leets.weeth.domain.user.application.exception;

import leets.weeth.global.common.exception.BusinessLogicException;

public class PasswordMismatchException extends BusinessLogicException {
public PasswordMismatchException() {
super(400, "비밀번호가 일치하지 않습니다.");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package leets.weeth.domain.user.application.exception;

import leets.weeth.global.common.exception.BusinessLogicException;

public class UserInActiveException extends BusinessLogicException {
public UserInActiveException() {
super(403, "가입 승인이 허가되지 않은 계정입니다.");
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package leets.weeth.domain.user.application.mapper;

import leets.weeth.domain.user.application.dto.response.UserResponseDto.SummaryResponse;
import leets.weeth.domain.user.application.dto.response.UserResponseDto.UserResponse;
import leets.weeth.domain.user.application.dto.response.UserResponseDto.*;
import leets.weeth.domain.user.domain.entity.User;
import leets.weeth.domain.user.domain.entity.enums.Department;
import leets.weeth.global.auth.jwt.application.dto.JwtDto;
import org.mapstruct.*;
import org.springframework.security.crypto.password.PasswordEncoder;

import static leets.weeth.domain.user.application.dto.request.UserRequestDto.Register;
import static leets.weeth.domain.user.application.dto.request.UserRequestDto.SignUp;
import static leets.weeth.domain.user.application.dto.response.UserResponseDto.AdminResponse;
import static leets.weeth.domain.user.application.dto.response.UserResponseDto.Response;
import static leets.weeth.domain.user.application.dto.response.UserResponseDto.*;

@Mapper(componentModel = MappingConstants.ComponentModel.SPRING, unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface UserMapper {
Expand All @@ -21,6 +21,12 @@ public interface UserMapper {
})
User from(SignUp dto, @Context PasswordEncoder passwordEncoder);

@Mappings({
@Mapping(target = "cardinals", expression = "java( java.util.List.of(dto.cardinal()) )"),
@Mapping(target = "department", expression = "java( leets.weeth.domain.user.domain.entity.enums.Department.to(dto.department()) )")
})
User from(Register dto);

@Mapping(target = "department", expression = "java( toString(user.getDepartment()) )")
Response to(User user);

Expand All @@ -31,10 +37,25 @@ public interface UserMapper {

SummaryResponse toSummaryResponse(User user);

SocialAuthResponse toSocialAuthResponse(Long kakaoId);

@Mappings({
@Mapping(target = "status", expression = "java(LoginStatus.LOGIN)"),
@Mapping(target = "id", source = "user.id"),
@Mapping(target = "kakaoId", source = "user.kakaoId"),
})
SocialLoginResponse toLoginResponse(User user, JwtDto dto);

@Mappings({
@Mapping(target = "status", expression = "java(LoginStatus.INTEGRATE)"),
})
SocialLoginResponse toIntegrateResponse(Long kakaoId);

@Mappings({
// 상세 데이터 매핑
})
UserResponse toUserResponse(User user);

default String toString(Department department) {
return department.getValue();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
package leets.weeth.domain.user.application.usecase;

import leets.weeth.domain.user.application.dto.request.UserRequestDto;
import leets.weeth.domain.user.application.dto.response.UserResponseDto;

import java.util.List;
import java.util.Map;

public interface UserManageUseCase {



List<UserResponseDto.AdminResponse> findAllByAdmin();

void accept(Long userId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,35 +4,19 @@
import leets.weeth.domain.attendance.domain.service.AttendanceSaveService;
import leets.weeth.domain.schedule.domain.entity.Meeting;
import leets.weeth.domain.schedule.domain.service.MeetingGetService;
import leets.weeth.domain.user.application.exception.StudentIdExistsException;
import leets.weeth.domain.user.application.exception.TelExistsException;
import leets.weeth.domain.user.application.mapper.UserMapper;
import leets.weeth.domain.user.domain.entity.User;
import leets.weeth.domain.user.domain.service.UserDeleteService;
import leets.weeth.domain.user.domain.service.UserGetService;
import leets.weeth.domain.user.domain.service.UserSaveService;
import leets.weeth.domain.user.domain.service.UserUpdateService;
import leets.weeth.global.auth.jwt.application.dto.JwtDto;
import leets.weeth.global.auth.jwt.application.usecase.JwtManageUseCase;
import leets.weeth.global.auth.jwt.service.JwtRedisService;
import leets.weeth.global.auth.kakao.KakaoAuthService;
import leets.weeth.global.auth.kakao.dto.KakaoTokenResponse;
import leets.weeth.global.auth.kakao.dto.KakaoUserInfoResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

import java.util.AbstractMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static leets.weeth.domain.user.application.dto.request.UserRequestDto.*;
import static leets.weeth.domain.user.application.dto.response.UserResponseDto.*;
import static leets.weeth.domain.user.domain.entity.enums.LoginStatus.LOGIN;
import static leets.weeth.domain.user.domain.entity.enums.LoginStatus.REGISTER;
import static leets.weeth.domain.user.domain.entity.enums.Status.ACTIVE;

import static leets.weeth.domain.user.application.dto.response.UserResponseDto.AdminResponse;

@Service
@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,17 @@
import static leets.weeth.domain.user.application.dto.request.UserRequestDto.Register;
import static leets.weeth.domain.user.application.dto.request.UserRequestDto.SignUp;
import static leets.weeth.domain.user.application.dto.response.UserResponseDto.SocialLoginResponse;
import static leets.weeth.domain.user.application.dto.request.UserRequestDto.*;
import static leets.weeth.domain.user.application.dto.response.UserResponseDto.*;


public interface UserUseCase {

SocialLoginResponse login(UserRequestDto.login dto);
SocialLoginResponse login(Login dto);

SocialAuthResponse authenticate(Login dto);

SocialLoginResponse integrate(NormalLogin dto);

UserResponseDto.Response find(Long userId);

Expand All @@ -28,7 +34,7 @@ public interface UserUseCase {

void apply(SignUp dto);

void register(Register dto, Long userId);
void socialRegister(Register dto);

JwtDto refresh(String refreshToken);

Expand Down
Loading

0 comments on commit 1c79845

Please sign in to comment.