Skip to content

Commit 3fe8c88

Browse files
Konstantin PankratovKonstantin Pankratov
authored andcommitted
Add check if username is already taken
1 parent e789f57 commit 3fe8c88

File tree

4 files changed

+20
-0
lines changed

4 files changed

+20
-0
lines changed

server/src/main/java/com/studybuddies/server/persistance/UserRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@
88
public interface UserRepository extends CrudRepository<UserEntity, UUID> {
99
Optional<UserEntity> findById(UUID id);
1010
boolean existsById(UUID id);
11+
boolean existsByUsername(String username);
1112
void deleteById(UUID id);
1213
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.studybuddies.server.services.exceptions;
2+
3+
public class UsernameAlreadyTakenException extends StudyBuddiesException {
4+
5+
public UsernameAlreadyTakenException(String message) {
6+
super(message);
7+
}
8+
}

server/src/main/java/com/studybuddies/server/services/user/UserService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.studybuddies.server.persistance.UserRepository;
55
import com.studybuddies.server.services.UUIDService;
66
import com.studybuddies.server.services.exceptions.UserAccountSetupNotFinished;
7+
import com.studybuddies.server.services.exceptions.UsernameAlreadyTakenException;
78
import com.studybuddies.server.services.interfaces.CRUDService;
89
import com.studybuddies.server.web.dto.AccountChangeRequest;
910
import com.studybuddies.server.web.dto.UserAccountSetupRequest;
@@ -41,6 +42,10 @@ public void create(UserAccountSetupRequest userAccountSetupRequest, String userU
4142
throw new AccountSetupAlreadyFinished("");
4243
}
4344

45+
if(userRepository.existsByUsername(userAccountSetupRequest.username)) {
46+
throw new UsernameAlreadyTakenException("");
47+
}
48+
4449
UserEntity user = userMapper.toUserEntity(userAccountSetupRequest);
4550
user.setUuid(uuid);
4651
userRepository.save(user);

server/src/main/java/com/studybuddies/server/web/GlobalExceptionHandler.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.studybuddies.server.services.exceptions.MeetingNotFoundException;
55
import com.studybuddies.server.services.exceptions.MergeFailedException;
66
import com.studybuddies.server.services.exceptions.UserAccountSetupNotFinished;
7+
import com.studybuddies.server.services.exceptions.UsernameAlreadyTakenException;
78
import com.studybuddies.server.web.mapper.exceptions.AccountSetupAlreadyFinished;
89
import com.studybuddies.server.web.mapper.exceptions.DateFormatException;
910
import com.studybuddies.server.web.mapper.exceptions.EndDateAfterStartDateException;
@@ -54,4 +55,9 @@ protected ResponseEntity<?> handleInvalidUUIDException() {
5455
protected ResponseEntity<?> handleMergeFailedException() {
5556
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Updating failed. Please create an issue on GitHub");
5657
}
58+
59+
@ExceptionHandler(UsernameAlreadyTakenException.class)
60+
protected ResponseEntity<?> handleUsernameAlreadyTakenException() {
61+
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Username already taken");
62+
}
5763
}

0 commit comments

Comments
 (0)