Skip to content

Commit 8240d16

Browse files
authored
feat: 사용자 닉네임 제한 기능 추가 (#165)
- UserProperties 클래스를 생성하여 금지된 닉네임 목록을 관리. - UserService에서 닉네임 중복 및 금지된 닉네임 검증 로직 추가. - application.yml 파일에 금지된 닉네임 설정 추가.
1 parent e619c3e commit 8240d16

3 files changed

Lines changed: 42 additions & 4 deletions

File tree

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package ssu.eatssu.domain.user.config;
2+
3+
import lombok.Getter;
4+
import lombok.Setter;
5+
import org.springframework.boot.context.properties.ConfigurationProperties;
6+
import org.springframework.stereotype.Component;
7+
8+
import java.util.ArrayList;
9+
import java.util.List;
10+
11+
@Getter
12+
@Setter
13+
@Component
14+
@ConfigurationProperties(prefix = "user")
15+
public class UserProperties {
16+
17+
private List<String> forbiddenNicknames = new ArrayList<>();
18+
19+
}

src/main/java/ssu/eatssu/domain/user/service/UserService.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import ssu.eatssu.domain.auth.entity.OAuthProvider;
1515
import ssu.eatssu.domain.auth.security.CustomUserDetails;
1616
import ssu.eatssu.domain.review.entity.Review;
17+
import ssu.eatssu.domain.user.config.UserProperties;
1718
import ssu.eatssu.domain.user.department.entity.Department;
1819
import ssu.eatssu.domain.user.department.persistence.DepartmentRepository;
1920
import ssu.eatssu.domain.user.dto.DepartmentResponse;
@@ -34,6 +35,7 @@ public class UserService {
3435
private final UserRepository userRepository;
3536
private final PasswordEncoder passwordEncoder;
3637
private final DepartmentRepository departmentRepository;
38+
private final UserProperties userProperties;
3739

3840
public User join(String email, OAuthProvider provider, String providerId) {
3941
String credentials = createCredentials(provider, providerId);
@@ -46,6 +48,10 @@ public void updateNickname(CustomUserDetails userDetails, NicknameUpdateRequest
4648
User user = userRepository.findById(userDetails.getId())
4749
.orElseThrow(() -> new BaseException(NOT_FOUND_USER));
4850

51+
if (isForbiddenNickname(request.nickname()) || userRepository.existsByNickname(request.nickname())) {
52+
throw new BaseException(DUPLICATE_NICKNAME);
53+
}
54+
4955
user.updateNickname(request.nickname());
5056
}
5157

@@ -71,6 +77,9 @@ public Boolean validateDuplicatedEmail(String email) {
7177
}
7278

7379
public Boolean validateDuplicatedNickname(String nickname) {
80+
if (isForbiddenNickname(nickname)) {
81+
return false;
82+
}
7483
return !userRepository.existsByNickname(nickname);
7584
}
7685

@@ -109,4 +118,9 @@ public DepartmentResponse getDepartment(CustomUserDetails userDetails) {
109118
}
110119
return new DepartmentResponse(department.getName());
111120
}
121+
122+
private boolean isForbiddenNickname(String nickname) {
123+
return userProperties.getForbiddenNicknames().stream()
124+
.anyMatch(forbidden -> forbidden.equalsIgnoreCase(nickname));
125+
}
112126
}

src/main/resources/application.yml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
spring:
22
profiles:
3-
# include : prod
4-
# include : dev
5-
include : local
6-
# include: test
3+
# include : prod
4+
# include : dev
5+
include : local
6+
# include: test
7+
8+
user:
9+
forbidden-nicknames:
10+
- EAT-SSU
11+
- EATSSU

0 commit comments

Comments
 (0)