Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ public JwtResponse linkOAuthWithUser(User user, String oauthMappingEntityId,
return generateTokensForUser(user.getId(), deviceType);
}

private JwtResponse generateTokensForUser(UUID userId, DeviceType deviceType) {
public JwtResponse generateTokensForUser(UUID userId, DeviceType deviceType) {
UserEntityDto userEntityDto = userRepository.getById(userId);
UserFactory.create(userEntityDto.getId(), userEntityDto.getEmail(),
userEntityDto.getNickname(), userEntityDto.getStatus());
Expand Down
1 change: 0 additions & 1 deletion src/main/java/com/knu/ddip/auth/domain/TokenType.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.knu.ddip.auth.domain;

//TODO: 추후 KAKAO 추가 예정
public enum TokenType {
ACCESS, REFRESH
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.knu.ddip.user.business.dto;

public record DummyRequest(
String email,
String nickname
) {
}
15 changes: 15 additions & 0 deletions src/main/java/com/knu/ddip/user/business/service/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.knu.ddip.auth.business.service.OAuthLoginService;
import com.knu.ddip.auth.domain.DeviceType;
import com.knu.ddip.auth.exception.OAuthBadRequestException;
import com.knu.ddip.user.business.dto.DummyRequest;
import com.knu.ddip.user.business.dto.SignupRequest;
import com.knu.ddip.user.business.dto.UniqueMailResponse;
import com.knu.ddip.user.business.dto.UserEntityDto;
Expand Down Expand Up @@ -71,4 +72,18 @@ public JwtResponse signUp(SignupRequest request) {
throw e;
}
}

@Transactional
public JwtResponse dummyLogin(DummyRequest dummyRequest) {
UserEntityDto userEntityDto = userRepository.findOptionalByEmail(dummyRequest.email())
.map(user -> userRepository.getByEmail(dummyRequest.email()))
.orElseGet(() -> userRepository.save(
dummyRequest.email(),
dummyRequest.nickname(),
UserStatus.ACTIVE.name()
));
User user = userEntityDto.toDomain();

return oAuthLoginService.generateTokensForUser(user.getId(), DeviceType.PHONE);
}
}
6 changes: 6 additions & 0 deletions src/main/java/com/knu/ddip/user/presentation/api/UserApi.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.knu.ddip.user.presentation.api;

import com.knu.ddip.auth.business.dto.JwtResponse;
import com.knu.ddip.user.business.dto.DummyRequest;
import com.knu.ddip.user.business.dto.SignupRequest;
import com.knu.ddip.user.business.dto.UniqueMailResponse;
import io.swagger.v3.oas.annotations.Operation;
Expand All @@ -24,4 +25,9 @@ ResponseEntity<JwtResponse> signup(
description = "메일이 사용 가능한지 조회한다. 휴면유저/탈퇴한 유저의 메일도 사용 불가.")
ResponseEntity<UniqueMailResponse> checkEmailUniqueness(
@RequestParam("v") String email);

@PostMapping("/dummy")
@Operation(summary = "[테스트용] 임시 로그인용 JWT 생성", description = "테스트를 위해 OAuth를 거치지 않고도 서버에서 사용 가능한 인증용 JWT를 생성한다. 주의: 만약 이미 존재하는 유저의 경우 닉네임이 입력한 email에 기반한 유저의 인증용 jwt가 생성되고, 닉네임은 입력한 닉네임이 아닌 기존의 닉네임으로 유지된다.")
ResponseEntity<JwtResponse> dummyLogin(
@RequestBody DummyRequest dummyRequest);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.knu.ddip.user.presentation.controller;

import com.knu.ddip.auth.business.dto.JwtResponse;
import com.knu.ddip.user.business.dto.DummyRequest;
import com.knu.ddip.user.business.dto.SignupRequest;
import com.knu.ddip.user.business.dto.UniqueMailResponse;
import com.knu.ddip.user.business.service.UserService;
Expand Down Expand Up @@ -33,6 +34,12 @@ public ResponseEntity<UniqueMailResponse> checkEmailUniqueness(
return ResponseEntity.status(HttpStatus.ACCEPTED).body(result);
}

@Override
public ResponseEntity<JwtResponse> dummyLogin(DummyRequest dummyRequest) {
JwtResponse jwtResponse = userService.dummyLogin(dummyRequest);
return ResponseEntity.ok(jwtResponse);
}

//TODO: 로그아웃
//TODO: 회원 탈퇴
//TODO: user 정보 수정
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ spring.data.redis.password=${REDIS_PASSWORD}
# JPA
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.hibernate.ddl-auto=update
spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Expand Down
Loading