Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat : 회원가입 API를 추가합니다. (회원가입에 요구되는 서브 태스크인 이메일 중복확인 API도 함께 추가) #60

Merged
merged 36 commits into from
Jan 22, 2024

Conversation

K-Diger
Copy link
Collaborator

@K-Diger K-Diger commented Jan 18, 2024

Related Issue

#59

Changes

이메일 중복확인, 임시 회원가입, 회원가입 API를 추가합니다.

Screenshots

To Reviewer

이 PR이 병합된 후 AuthService에서 이메일 인증 발송 및 인증을 수행하는 로직을 작성한 후 로그인 API를 작성할 예정입니다.

Additional Context(optional)

How Has This Been Tested?

Checklist

  • PR 제목은 포맷과 내용 둘 다 알맞게 작성되었는가
  • PR에 대해 구체적으로 설명이 되어있는가

@K-Diger K-Diger self-assigned this Jan 18, 2024
@K-Diger K-Diger marked this pull request as draft January 18, 2024 07:24
@github-actions github-actions bot added service 백엔드 서비스 관련 내용을 다룰 때 사용됩니다 feature 새로운 기능을 만들 때 사용됩니다 labels Jan 18, 2024
Copy link
Collaborator

@210-reverof 210-reverof left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

굿~

String email,
String password,
String username, // @DoHyeon
String nickname, // DoHyeon
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

혹시 주석 놔두신 이유 여쭤봐도 될까요?

@RestController
@RequestMapping("/api/v1/users")
@RequiredArgsConstructor
public class UserApi {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오늘 피드백에서 언급된 것 같이, 좀 더 제너럴한 네이밍 (controller, service ...)을 도입할까요?

@PostMapping("join")
public void join(
@RequestBody JoinRequest joinRequest
) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dto를 넘기는 건 어때요?

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

@Configuration
public class AdditionalBeans {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

명확한 이름이면 좋을 것 같아요

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JpaRepository를 extends 했다면 붙이지 않아도 돼요

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/v1/users")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 그리고 이 앞에 /api/v1 은 gateway에서 분기하면 될 것 같아요! /users로 바로 시작하는 거 어떨까요

import jakarta.validation.constraints.NotBlank;

public record EmailDuplicationVerifyRequest(
@NotBlank
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
@NotBlank
import javax.validation.constraints.Email;
@NotBlank
@Email


import java.util.Optional;

public record JoinRequest(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JoinRequest에서는 값 검증을 따로 하지 않나요?


import lombok.Builder;

@Builder
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

builder를 사용하시는 이유가 있을까요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

가독성이 더 좋다고 판단했습니다~

@K-Diger K-Diger marked this pull request as ready for review January 21, 2024 15:40
@K-Diger K-Diger merged commit f8a55ca into user/dev Jan 22, 2024
1 check passed
@K-Diger K-Diger deleted the user/feat-join branch January 22, 2024 11:20
K-Diger added a commit that referenced this pull request Jan 22, 2024
* feat: init project

* fix: add multi platform (#39)

* feat : 회원가입 API를 추가합니다. (회원가입에 요구되는 서브 태스크인 이메일 중복확인 API도 함께 추가) (#60)

* feat : 유저 도메인 정의

* feat : 유저 서비스 내 글로벌 예외처리 추가

* refactor : 이메일 중복 DTO 수정

* feat : 인수/통합 테스트 템플릿 추가

* refactor : NoArgsConstructor 접근 제어자 변경

* refactor : 회원가입 쓰기 작업 시 Transactional 옵션 변경

* test : 회원가입 성공 인수 테스트 작성

* feat: set gradle project

* feat: create createUser interface

* feat: add generated ignore

* feat: set gRPC settings

* feat: add ports setting

* feat: create gRPC client method

* refactor : VO를 class에서 record로 변경

* refactor : create_social_user.proto 필드 네이밍 수정

* refactor : send_email_auth.proto 생성

* refactor : UserApi 엔드포인트 및 네이밍 변경

* refactor : 불필요한 파일 제거

* feat : 공통 환경 설정 및 패스워드 인코더 추가

* refactor : dto 패키지 변경

* feat : PasswordEncoder 인터페이스 추가

* feat : gRPC Client, Eureka 연동

* feat : 유저 임시 가입 유스케이스, 비즈니스 로직 추가

* refactor : 정적 컨텐츠 VO 래핑 추가

* refactor : 불필요한 테스트 제거

* fix : grpc import syntax in build.gradle

* refactor : 주석 제거

* refactor : GRPC -> Grpc 네이밍 변경

* refactor : application.yml 환경변수화

* refactor : User DDL 수정

* refactor : JoinRequest내 불필요한 필드 제거

* refactor : EurekaServiceName Enum 필드 Getter 추가

* refactor : User Entity Role 기본 값 추가

* refactor : Eureka Client defaultZone 수정

* refactor : Clean Broken Code

* fix: add builder (#86)

* feat: add envs (#91)

* fix : build.gradle (#92)

* refactor : build script (#94)
K-Diger added a commit that referenced this pull request Jan 24, 2024
* feat: init project

* fix: add multi platform (#39)

* feat : 회원가입 API를 추가합니다. (회원가입에 요구되는 서브 태스크인 이메일 중복확인 API도 함께 추가) (#60)

* feat : 유저 도메인 정의

* feat : 유저 서비스 내 글로벌 예외처리 추가

* refactor : 이메일 중복 DTO 수정

* feat : 인수/통합 테스트 템플릿 추가

* refactor : NoArgsConstructor 접근 제어자 변경

* refactor : 회원가입 쓰기 작업 시 Transactional 옵션 변경

* test : 회원가입 성공 인수 테스트 작성

* feat: set gradle project

* feat: create createUser interface

* feat: add generated ignore

* feat: set gRPC settings

* feat: add ports setting

* feat: create gRPC client method

* refactor : VO를 class에서 record로 변경

* refactor : create_social_user.proto 필드 네이밍 수정

* refactor : send_email_auth.proto 생성

* refactor : UserApi 엔드포인트 및 네이밍 변경

* refactor : 불필요한 파일 제거

* feat : 공통 환경 설정 및 패스워드 인코더 추가

* refactor : dto 패키지 변경

* feat : PasswordEncoder 인터페이스 추가

* feat : gRPC Client, Eureka 연동

* feat : 유저 임시 가입 유스케이스, 비즈니스 로직 추가

* refactor : 정적 컨텐츠 VO 래핑 추가

* refactor : 불필요한 테스트 제거

* fix : grpc import syntax in build.gradle

* refactor : 주석 제거

* refactor : GRPC -> Grpc 네이밍 변경

* refactor : application.yml 환경변수화

* refactor : User DDL 수정

* refactor : JoinRequest내 불필요한 필드 제거

* refactor : EurekaServiceName Enum 필드 Getter 추가

* refactor : User Entity Role 기본 값 추가

* refactor : Eureka Client defaultZone 수정

* refactor : Clean Broken Code

* fix: add builder (#86)

* feat: add envs (#91)

* fix : build.gradle (#92)

* refactor : build script (#94)
K-Diger added a commit that referenced this pull request Jan 26, 2024
* release : 유저 서비스 내 이메일 중복 검증, 임시 회원가입, 회원가입 기능 추가 (#87)

* feat: init project

* fix: add multi platform (#39)

* feat : 회원가입 API를 추가합니다. (회원가입에 요구되는 서브 태스크인 이메일 중복확인 API도 함께 추가) (#60)

* feat : 유저 도메인 정의

* feat : 유저 서비스 내 글로벌 예외처리 추가

* refactor : 이메일 중복 DTO 수정

* feat : 인수/통합 테스트 템플릿 추가

* refactor : NoArgsConstructor 접근 제어자 변경

* refactor : 회원가입 쓰기 작업 시 Transactional 옵션 변경

* test : 회원가입 성공 인수 테스트 작성

* feat: set gradle project

* feat: create createUser interface

* feat: add generated ignore

* feat: set gRPC settings

* feat: add ports setting

* feat: create gRPC client method

* refactor : VO를 class에서 record로 변경

* refactor : create_social_user.proto 필드 네이밍 수정

* refactor : send_email_auth.proto 생성

* refactor : UserApi 엔드포인트 및 네이밍 변경

* refactor : 불필요한 파일 제거

* feat : 공통 환경 설정 및 패스워드 인코더 추가

* refactor : dto 패키지 변경

* feat : PasswordEncoder 인터페이스 추가

* feat : gRPC Client, Eureka 연동

* feat : 유저 임시 가입 유스케이스, 비즈니스 로직 추가

* refactor : 정적 컨텐츠 VO 래핑 추가

* refactor : 불필요한 테스트 제거

* fix : grpc import syntax in build.gradle

* refactor : 주석 제거

* refactor : GRPC -> Grpc 네이밍 변경

* refactor : application.yml 환경변수화

* refactor : User DDL 수정

* refactor : JoinRequest내 불필요한 필드 제거

* refactor : EurekaServiceName Enum 필드 Getter 추가

* refactor : User Entity Role 기본 값 추가

* refactor : Eureka Client defaultZone 수정

* refactor : Clean Broken Code

* fix: add builder (#86)

* feat: add envs (#91)

* fix : build.gradle (#92)

* refactor : build script (#94)

* feat: send_email_auth.proto, update_user_auth-status.proto

* refactor : GUpdateUserAuthStatusRequest 필드 수정

* refactor : GSendEmailAuthRequest Protobuf 필드 수정

* refactor : ExceptionType 수정

* refactor : gRPC Client AUTH-SERVICE 추가

* feat : AuthService -> UserService 인증상태 변경 기능 추가

* refactor : gRPC통신 간 예외처리 추가

* refactor : gRPC Client, Server 네이밍 변경

* refactor : gRPC Server 반환 구문 추가

* refactor : private method 래핑 해제

* refactor : 톰캣 및 gRPC서버 포트 변경

* refactor : typo

* refactor : broken typo and transactional

* refactor : eureka url

* refactor : 유레카 유틸라이저 제거

* refactor : 조건절 분기문 리팩터링

* refactor : 패스워드 유틸라이저
K-Diger added a commit that referenced this pull request Feb 21, 2024
* feat: init project

* fix: add multi platform (#39)

* feat: set gradle project

* feat: create createUser interface

* feat: add generated ignore

* feat : 회원가입 API를 추가합니다. (회원가입에 요구되는 서브 태스크인 이메일 중복확인 API도 함께 추가) (#60)

* feat : 유저 도메인 정의

* feat : 유저 서비스 내 글로벌 예외처리 추가

* refactor : 이메일 중복 DTO 수정

* feat : 인수/통합 테스트 템플릿 추가

* refactor : NoArgsConstructor 접근 제어자 변경

* refactor : 회원가입 쓰기 작업 시 Transactional 옵션 변경

* test : 회원가입 성공 인수 테스트 작성

* feat: set gradle project

* feat: create createUser interface

* feat: add generated ignore

* feat: set gRPC settings

* feat: add ports setting

* feat: create gRPC client method

* refactor : VO를 class에서 record로 변경

* refactor : create_social_user.proto 필드 네이밍 수정

* refactor : send_email_auth.proto 생성

* refactor : UserApi 엔드포인트 및 네이밍 변경

* refactor : 불필요한 파일 제거

* feat : 공통 환경 설정 및 패스워드 인코더 추가

* refactor : dto 패키지 변경

* feat : PasswordEncoder 인터페이스 추가

* feat : gRPC Client, Eureka 연동

* feat : 유저 임시 가입 유스케이스, 비즈니스 로직 추가

* refactor : 정적 컨텐츠 VO 래핑 추가

* refactor : 불필요한 테스트 제거

* fix : grpc import syntax in build.gradle

* refactor : 주석 제거

* refactor : GRPC -> Grpc 네이밍 변경

* refactor : application.yml 환경변수화

* refactor : User DDL 수정

* refactor : JoinRequest내 불필요한 필드 제거

* refactor : EurekaServiceName Enum 필드 Getter 추가

* refactor : User Entity Role 기본 값 추가

* refactor : Eureka Client defaultZone 수정

* refactor : Clean Broken Code

* fix: add builder (#86)

* feat: add envs (#91)

* fix : build.gradle (#92)

* refactor : build script (#94)

* refactor : 도메인 리팩터링 (#101)

* feat: send_email_auth.proto, update_user_auth-status.proto

* refactor : GUpdateUserAuthStatusRequest 필드 수정

* refactor : GSendEmailAuthRequest Protobuf 필드 수정

* feat: 이메일 인증을 완료한 사용자의 인증 상태를 변경하는 기능을 추가합니다. (#120)

* release : 유저 서비스 내 이메일 중복 검증, 임시 회원가입, 회원가입 기능 추가 (#87)

* feat: init project

* fix: add multi platform (#39)

* feat : 회원가입 API를 추가합니다. (회원가입에 요구되는 서브 태스크인 이메일 중복확인 API도 함께 추가) (#60)

* feat : 유저 도메인 정의

* feat : 유저 서비스 내 글로벌 예외처리 추가

* refactor : 이메일 중복 DTO 수정

* feat : 인수/통합 테스트 템플릿 추가

* refactor : NoArgsConstructor 접근 제어자 변경

* refactor : 회원가입 쓰기 작업 시 Transactional 옵션 변경

* test : 회원가입 성공 인수 테스트 작성

* feat: set gradle project

* feat: create createUser interface

* feat: add generated ignore

* feat: set gRPC settings

* feat: add ports setting

* feat: create gRPC client method

* refactor : VO를 class에서 record로 변경

* refactor : create_social_user.proto 필드 네이밍 수정

* refactor : send_email_auth.proto 생성

* refactor : UserApi 엔드포인트 및 네이밍 변경

* refactor : 불필요한 파일 제거

* feat : 공통 환경 설정 및 패스워드 인코더 추가

* refactor : dto 패키지 변경

* feat : PasswordEncoder 인터페이스 추가

* feat : gRPC Client, Eureka 연동

* feat : 유저 임시 가입 유스케이스, 비즈니스 로직 추가

* refactor : 정적 컨텐츠 VO 래핑 추가

* refactor : 불필요한 테스트 제거

* fix : grpc import syntax in build.gradle

* refactor : 주석 제거

* refactor : GRPC -> Grpc 네이밍 변경

* refactor : application.yml 환경변수화

* refactor : User DDL 수정

* refactor : JoinRequest내 불필요한 필드 제거

* refactor : EurekaServiceName Enum 필드 Getter 추가

* refactor : User Entity Role 기본 값 추가

* refactor : Eureka Client defaultZone 수정

* refactor : Clean Broken Code

* fix: add builder (#86)

* feat: add envs (#91)

* fix : build.gradle (#92)

* refactor : build script (#94)

* feat: send_email_auth.proto, update_user_auth-status.proto

* refactor : GUpdateUserAuthStatusRequest 필드 수정

* refactor : GSendEmailAuthRequest Protobuf 필드 수정

* refactor : ExceptionType 수정

* refactor : gRPC Client AUTH-SERVICE 추가

* feat : AuthService -> UserService 인증상태 변경 기능 추가

* refactor : gRPC통신 간 예외처리 추가

* refactor : gRPC Client, Server 네이밍 변경

* refactor : gRPC Server 반환 구문 추가

* refactor : private method 래핑 해제

* refactor : 톰캣 및 gRPC서버 포트 변경

* refactor : typo

* refactor : broken typo and transactional

* refactor : eureka url

* refactor : 유레카 유틸라이저 제거

* refactor : 조건절 분기문 리팩터링

* refactor : 패스워드 유틸라이저

* 톰캣 및 gRPC 서버 포트 변경

* refactor : protobuf 파일 네이밍 변경

* refactor : protobuf 파일 네이밍 변경

* refactor : 패스워드 인코더 참조 방식 변경

* refactor : 패스워드 인코더 생성자 주입

* feat : gRPC 서버 메서드 추가

* refactor : 테스트 유저 생성 방식 변경

* feat : Passport protobuf 추가

* feat : Passport 추가

- feat : Passport 발급 및 검증 기능 추가

- feat : Exception 핸들러 추가

- feat : HMacEncoder 추가

* feat: Add getFollowers rpc function to GSocialService

* fix: update build.gradle

* fix: update build.gradle

* refactor : Passport 추출 방식 수정

* refactor : 프로토버퍼 수정 (message -> isSuccess, JWTValidateDTO)

* feat : UserService Proto LoadById

* refactor : Passport 관련 클래스 빈 환경설정 등록

* feat: user spring's ObjectMapper

* refactor : 로그인 gRPC 응답값 변경

* feat: [UserService] 유저 아이디로 유저정보를 조회하는 gRPC 서버 코드를 추가합니다. (#140)

* fix: update build.gradle

* refactor : Passport 추출 방식 수정

* refactor : 프로토버퍼 수정 (message -> isSuccess, JWTValidateDTO)

* feat : UserService Proto LoadById

* refactor : Passport 관련 클래스 빈 환경설정 등록

* refactor : userId로 유저 조회 gRPC Server 추가

* refactor : passport 환경변수 추가

* feat: user spring's ObjectMapper

* refactor : 로그인 gRPC 응답값 변경

* refactor : typo

* docs : passport ENV 추가

* refactor : github action passport 추가

* feat : 패스프트로 유저 팔로잉, 팔로워 수를 조회하는 protobuf 추가

* feat : Passport Extract AOP 로직 추가

* feat : Passport Extract AOP 로직 추가

* refactor : EaselAuthenticationContext 삽입 필드 변경

* refactor : PassportExtractor decode구문 추가

* feat : 유저 해시태그 중복확인 기능 추가 (#156)

* feat: 유저 정보 조회 Endpoint를 추가합니다. (#164)

* feat: user spring's ObjectMapper

* refactor : 로그인 gRPC 응답값 변경

* feat : 패스프트로 유저 팔로잉, 팔로워 수를 조회하는 protobuf 추가

* feat : 유저 정보 조회 기능 추가

* refactor : 유저 정보 조회 테스트 추가

* feat : Passport Extract AOP 로직 추가

* refactor : EaselAuthenticationContext 삽입 필드 변경

* refactor : PassportExtractor decode구문 추가

* refactor : 유저 정보 조회 테스트 코드 리팩터링

* refactor : 유저 정보 조회 테스트 추가

* feat : 유저 프로필 수정 Endpoint 추가

* refactor : rename dto

* refactor : typo

* feat : add missing controller

* feat : 패스프트로 유저 팔로잉, 팔로워 수를 조회하는 protobuf 추가

* feat : 유저 정보 조회 기능 추가

* refactor : 유저 정보 조회 테스트 추가

* feat : Passport Extract AOP 로직 추가

* refactor : EaselAuthenticationContext 삽입 필드 변경

* refactor : PassportExtractor decode구문 추가

* refactor : 유저 정보 조회 테스트 코드 리팩터링

* refactor : 유저 정보 조회 테스트 추가

* feat : 유저 프로필 수정 Endpoint 추가

* refactor : rename dto

* refactor : typo

* feat : add missing controller

* refactor : typo

* refactor : typo

* refactor : 로그인 시 accessedAt 갱신

* refactor : 불필요한 의존성 제거

* refactor : typo

* refactor : typo gradle

* refactor : Add Custom Getter For Column (DeletedAt) (#172)

* docs : Add Docker Compose Syntax UserService MySQL Image (#174)

* fix: update ddl-auto to create (#184)

* update User docker hub push yml (#189)

* script: update GitHub workflow for Dockerhub push on user service

* refactor : Aspect 내 예외처리 제거

* docs : typo

* feat : Kafka, RabbitMQ 공통 모듈 추가

* feat : Detail Event 추가

* refactor : typo

* refactor : internal error logging

* feat: add getter in constants

* feat: update PaintCreatedEvent by adding missing fields

* feat: add mention record

* feat: update mentionrecord

* docs: modify eureka server

* fix: add trust-package config

* docs: modify eureka addr

* docs : modify eureka hostname

* docs : eureka client addr

* refactor : exception integration

* refactor : exception response builder access identifier

* refactor : remove gateway exceptiontype

* refactor : exception integration

* chore : add test log

* docs: userService CI/CD

* docs: ci/cd script

* docs : ci/cd script

* Update and rename userservice-deploy.yml to userservice-ci-cd.yml

* docs : ci-cd script

* feat: add gRPC paint response interface

* docs : typo

* cd : typo

* ci-cd : modify typo

* refactor : modify eureka server addr

* ci-cd : typo

* ci-cd : resolve permission

* feat: gRPC version change 1.60 -> 1.58

* docs: DDL

* refactor : remove debug logging

* refactor : missing transactional annotation

* feat: add UpdateUserImagePath message

* refactor : change & hide eureka server addr

* ci-cd : add env eureka server addr

* ci-cd : stop script

* ci-cd : debugging

* ci-cd : revert

* feat: update UpdateUserEvent message

* feat: update user nickname, image path (#244)

* feat: add UpdateUserImagePath message

* feat: update UpdateUserEvent message

* feat: add producing logic

* fix: update ddl option

* docs : update DDL

* refactor : renaming JoinRequest dto field

* refactor : user creation parameter

* refactor : Add Id Field in UserRetrieveResponse

* Update userservice-ci-cd.yml

* feat : UserService -> NotificationService 유저 생성 Protobuf 추가

* feat : Internal Error Logging Aspect 추가

* feat: Add TemporaryUserDeletionEvent class

* fix: remove getter

* feat: [UserService] 회원가입 시 알림 서버에 해당 유저의 메타데이터를 전송하는 기능을 추가합니다. (#247)

* feat: add UpdateUserImagePath message

* feat: update UpdateUserEvent message

* feat : UserService -> NotificationService 유저 생성 Protobuf 추가

* feat : Internal Error Logging Aspect 추가

* feat : gRPC Notification Client (UserCreated)

* refactor : add logger in external communication context

* feat : add import LoggingAspect

* fix : broken test

* feat: [User] delete temporary user (#252)

* feat: delete temporary user

* fix: Add KafkaConsumer configuration in EaselUserServiceApplication

* fix: remove getter

* fix: KafkaConsumer topic name

* feat : add UserCreatedEvent

* fix : modify UserCreatedEvent

* refactor: Update TopicConstant and TemporaryUserDeletionEvent

* feat: separate quote Paint

* feat : add UserCreatedEvent

* fix : modify UserCreatedEvent

* feat : User Created Event Pub In join

* refactor : Exception typo

* Add 'UNLIKED_PAINT' to TopicConstant, UnlikedPaintEvent

* refactor : convention typo

* fix : miss mapping gRPC AuthClient

* refactor: Update field in PaintCreatedEvent

* fix: remove ReplyCreatedEvent

* feat: remove duplicated response

* fix : broken notification User Creation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature 새로운 기능을 만들 때 사용됩니다 service 백엔드 서비스 관련 내용을 다룰 때 사용됩니다
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants