1414import ssu .eatssu .domain .auth .entity .OAuthProvider ;
1515import ssu .eatssu .domain .auth .security .CustomUserDetails ;
1616import ssu .eatssu .domain .review .entity .Review ;
17+ import ssu .eatssu .domain .user .config .UserProperties ;
1718import ssu .eatssu .domain .user .department .entity .Department ;
1819import ssu .eatssu .domain .user .department .persistence .DepartmentRepository ;
1920import 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}
0 commit comments