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 @@ -11,6 +11,7 @@ public static User toUsers(UserRequestDTO.SignUpRequest request, String password
.email(request.getEmail())
.name(request.getName())
.password(password)
.marketingAgreed(request.isMarketingAgreed())
.status(Status.ACTIVE)
.build();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.haru.api.domain.user.dto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Builder;
Expand All @@ -10,13 +11,16 @@
public class UserRequestDTO {
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class SignUpRequest {
@NotBlank(message = "이메일은 빈값일 수 없습니다.")
private String email;
@NotBlank(message = "비밀번호는 빈값일 수 없습니다.")
private String password;
@NotBlank(message = "이름은 빈값일 수 없습니다.")
private String name;
private boolean marketingAgreed;
}

@Getter
Expand All @@ -32,6 +36,8 @@ public static class LoginRequest {

@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class UserInfoUpdateRequest {
@NotBlank(message = "이름은 빈 값일 수 없습니다.")
private String name;
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/haru/api/domain/user/entity/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ public class User extends BaseEntity {
@Column(nullable = false, length = 100)
private String password;

private boolean marketingAgreed;

@Enumerated(EnumType.STRING)
@Column
private Status status;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.haru.api.domain.user.security;

import com.haru.api.global.apiPayload.exception.handler.MemberHandler;
import lombok.RequiredArgsConstructor;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.BadCredentialsException;
Expand All @@ -10,6 +11,8 @@
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;

import static com.haru.api.global.apiPayload.code.status.ErrorStatus.MEMBER_PASSWORD_NOT_MATCH;

@Component
@RequiredArgsConstructor
public class CustomAuthenticationProvider implements AuthenticationProvider {
Expand All @@ -24,7 +27,7 @@ public Authentication authenticate(Authentication authentication)

String password = authentication.getCredentials().toString();
if (!passwordEncoder.matches(password, userDetails.getPassword())) {
throw new BadCredentialsException("Password가 일치하지 않습니다.");
throw new MemberHandler(MEMBER_PASSWORD_NOT_MATCH);
}

return new UsernamePasswordAuthenticationToken(userDetails, authentication.getCredentials(), userDetails.getAuthorities());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.haru.api.domain.user.entity.User;
import com.haru.api.domain.user.repository.UserRepository;
import com.haru.api.global.apiPayload.code.status.ErrorStatus;
import com.haru.api.global.apiPayload.exception.handler.MemberHandler;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
Expand All @@ -18,7 +20,7 @@ public class CustomUserDetailsService implements CustomDetailsService {
@Override
public UserDetails loadUserByUsername(String email, String password) throws UsernameNotFoundException {
User user = userRepository.findByEmail(email)
.orElseThrow(() -> new UsernameNotFoundException("해당 아이디를 가진 유저가 존재하지 않습니다: " + email));
.orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_USERNAME_NOT_FOUND));

org.springframework.security.core.userdetails.User securityUser = new org.springframework.security.core.userdetails.User(
user.getEmail(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,14 @@ public class UserCommandServiceImpl implements UserCommandService{
@Override
public void signUp(UserRequestDTO.SignUpRequest request) {
String password = passwordEncoder.encode(request.getPassword());
User user = UserConverter.toUsers(request, password);
userRepository.save(user);
// 이메일 중복 확인
User foundUser = userRepository.findByEmail(request.getEmail()).orElse(null);
if (foundUser != null) {
throw new MemberHandler(ErrorStatus.MEMBER_ALREADY_EXISTS);
} else {
User user = UserConverter.toUsers(request, password);
userRepository.save(user);
}
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
package com.haru.api.domain.workspace.dto;

import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.List;

public class WorkspaceRequestDTO {

@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class WorkspaceCreateRequest {
@NotBlank(message = "워크스페이스 제목은 빈 값일 수 없습니다.")
private String name;
Expand All @@ -18,6 +22,8 @@ public static class WorkspaceCreateRequest {

@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class WorkspaceUpdateRequest {
@NotBlank(message = "수정하고자 하는 제목은 빈 값일 수 없습니다.")
private String title;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ public enum ErrorStatus implements BaseErrorCode {
MEMBER_NOT_FOUND(HttpStatus.BAD_REQUEST, "MEMBER4001", "사용자가 없습니다."),
REFRESH_TOKEN_NOT_EQUAL(HttpStatus.BAD_REQUEST, "MEMBER4002", "리프레시 토큰이 일치하지 않습니다."),
MEMBER_NO_AUTHORITY(HttpStatus.FORBIDDEN, "MEMBER4003", "수정 및 삭제할 권한이 없습니다."),
MEMBER_ALREADY_EXISTS(HttpStatus.BAD_REQUEST, "MEMBER4004", "이미 존재하는 회원입니다."),
MEMBER_USERNAME_NOT_FOUND(HttpStatus.BAD_REQUEST, "MEMBER4005", "해당 아이디를 가진 유저가 존재하지 않습니다."), //
MEMBER_PASSWORD_NOT_MATCH(HttpStatus.BAD_REQUEST, "MEMBER4006", "비밀번호가 일치하지 않습니다."),

// Workspace 관련 에러
WORKSPACE_NOT_FOUND(HttpStatus.BAD_REQUEST,"WORKSPACE4001", "워크스페이스가 없습니다."),
Expand Down