Skip to content

Commit

Permalink
Merge pull request #22 from KOA-TF/feat/member
Browse files Browse the repository at this point in the history
feat : 비밀번호 변경 기능 추가
  • Loading branch information
isprogrammingfun authored Nov 5, 2023
2 parents e7d8192 + 9724f08 commit 28041f3
Show file tree
Hide file tree
Showing 11 changed files with 114 additions and 48 deletions.
Original file line number Diff line number Diff line change
@@ -1,19 +1,22 @@
package com.koa.apimodule.command.api;

import com.koa.coremodule.member.application.dto.request.MemberDetailCreateRequest;
import com.koa.coremodule.member.application.dto.request.MemberPasswordChangeRequest;
import com.koa.coremodule.member.application.dto.response.MemberDetailInfoResponse;
import com.koa.coremodule.member.application.dto.response.MemberInfoResponse;
import com.koa.coremodule.member.application.dto.response.RegisterResponse;
import com.koa.coremodule.member.application.service.EmailVerificationUseCase;
import com.koa.coremodule.member.application.service.MemberDeleteUseCase;
import com.koa.coremodule.member.application.service.MemberDetailCreateUseCase;
import com.koa.coremodule.member.application.service.MemberInfoGetUseCase;
import com.koa.coremodule.member.application.service.MemberRegisterGetUseCase;
import com.koa.coremodule.member.application.service.MemberGetUseCase;
import com.koa.coremodule.member.application.service.MemberCheckUseCase;
import com.koa.coremodule.member.application.service.MemberPasswordChangeUseCase;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
Expand All @@ -26,30 +29,31 @@
@RequestMapping("/v1/member")
public class MemberController {

private final MemberInfoGetUseCase memberInfoGetUseCase;
private final MemberDetailCreateUseCase memberInfoCreateUseCase;
private final MemberRegisterGetUseCase memberRegisterGetUseCase;
private final MemberGetUseCase memberGetUseCase;
private final MemberDetailCreateUseCase memberDetailCreateUseCase;
private final MemberCheckUseCase memberCheckUseCase;
private final MemberDeleteUseCase memberDeleteUseCase;
private final EmailVerificationUseCase emailVerificationUseCase;
private final MemberPasswordChangeUseCase memberPasswordChangeUseCase;

@GetMapping
public MemberInfoResponse getMemberInfo(){
return memberInfoGetUseCase.getMemberInfo();
return memberGetUseCase.getMemberInfo();
}

@PostMapping
public void postMemberInfo(@RequestPart(value = "dto") MemberDetailCreateRequest memberInfoCreateRequest, @RequestPart(value = "file") MultipartFile multipartFile){
memberInfoCreateUseCase.createMemberInfo(memberInfoCreateRequest, multipartFile);
memberDetailCreateUseCase.createMemberInfo(memberInfoCreateRequest, multipartFile);
}

@PostMapping("/register")
public RegisterResponse authJoin(@RequestParam String email, @RequestParam String password) {
return memberRegisterGetUseCase.getMemberRegistered(email, password);
public void checkMemberRegistered(@RequestParam String email, @RequestParam String password) {
memberCheckUseCase.checkMemberRegistered(email, password);
}

@GetMapping("/info")
public MemberDetailInfoResponse getMemberDetailInfo() {
return memberInfoGetUseCase.getMemberDetailInfo();
return memberGetUseCase.getMemberDetailInfo();
}

@PostMapping("/verify")
Expand All @@ -66,4 +70,14 @@ public void verifyCode(@RequestParam String email, @RequestParam String code) {
public void deleteMember(){
memberDeleteUseCase.deleteMember();
}

@PostMapping("/password")
public void checkPassword(@RequestParam String password) {
memberCheckUseCase.checkPassword(password);
}

@PutMapping("/password")
public void putPassword(@RequestBody MemberPasswordChangeRequest memberPasswordChangeRequest) {
memberPasswordChangeUseCase.changePassword(memberPasswordChangeRequest);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public enum Error {

// MEMBER
MEMBER_NOT_FOUND("사용자를 찾을 수 없습니다.", 2000),
WRONG_PASSWORD("비밀번호가 틀렸습니다.", 2001),

//NOTICE
NOTICE_NOT_FOUND("공지사항을 찾을 수 없습니다.", 3000),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.koa.coremodule.member.application.dto.request;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class MemberPasswordChangeRequest {
private String password;

public MemberPasswordChangeRequest(String password) {
this.password = password;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.koa.coremodule.member.application.exception;

import com.koa.commonmodule.exception.BusinessException;
import com.koa.commonmodule.exception.Error;

public class WrongPasswordException extends BusinessException {
public WrongPasswordException(Error error) {
super(error);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.koa.coremodule.member.application.service;

import com.koa.commonmodule.annotation.ApplicationService;
import com.koa.commonmodule.exception.Error;
import com.koa.coremodule.member.application.exception.WrongPasswordException;
import com.koa.coremodule.member.domain.entity.Member;
import com.koa.coremodule.member.domain.service.MemberQueryService;
import com.koa.coremodule.member.domain.utils.MemberUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

@ApplicationService
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class MemberCheckUseCase {

private final MemberUtils memberUtils;
private final MemberQueryService memberQueryService;

public void checkMemberRegistered(String email, String password) {
memberQueryService.checkMemberRegistered(email, password);
}

public void checkPassword(String password) {
Member member = memberUtils.getAccessMember();
if(!member.getPassword().equals(password)) {
throw new WrongPasswordException(Error.WRONG_PASSWORD);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
@ApplicationService
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class MemberInfoGetUseCase {
public class MemberGetUseCase {

private final MemberUtils memberUtils;
private final MemberDetailQueryService memberDetailQueryService;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.koa.coremodule.member.application.service;

import com.koa.commonmodule.annotation.ApplicationService;
import com.koa.coremodule.member.application.dto.request.MemberPasswordChangeRequest;
import com.koa.coremodule.member.domain.entity.Member;
import com.koa.coremodule.member.domain.utils.MemberUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

@ApplicationService
@RequiredArgsConstructor
@Transactional
public class MemberPasswordChangeUseCase {

private final MemberUtils memberUtils;

public void changePassword(MemberPasswordChangeRequest request) {
Member member = memberUtils.getAccessMember();
member.updatePassword(request.getPassword());
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.koa.commonmodule.domain.BaseEntity;
import jakarta.persistence.*;
import java.util.Objects;
import lombok.*;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;
Expand Down Expand Up @@ -30,4 +31,10 @@ public class Member extends BaseEntity {
private Authority authority;

private Boolean isDeleted = Boolean.FALSE;

public void updatePassword(String password) {
if(this.password.equals(password))
return;
this.password = Objects.requireNonNull(password, "password must be not null");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@ public void checkAccountExist(String email, Authority authority) {
}
}

public boolean checkRegister(String email, String password) {
return memberRepository.existsByEmailAndPassword(email, password);
public void checkMemberRegistered(String email, String password) {
if(!memberRepository.existsByEmailAndPassword(email, password)) {
throw new UserNotFoundException(Error.MEMBER_NOT_FOUND);
}
}

public Member findByEmail(String email) {
Expand Down

0 comments on commit 28041f3

Please sign in to comment.