diff --git a/.openapi-generator/user.yaml-generate-user-spring-controllers.sha256 b/.openapi-generator/user.yaml-generate-user-spring-controllers.sha256 index 04fb5dc..260555e 100644 --- a/.openapi-generator/user.yaml-generate-user-spring-controllers.sha256 +++ b/.openapi-generator/user.yaml-generate-user-spring-controllers.sha256 @@ -1 +1 @@ -1e2aa971ec97b1bd78a451195d7fa53e0fe3ca4cbd2ac1c9cec78da943702e00 \ No newline at end of file +41ced36deafe737a87868e6f537bb404c4732836183115d245fac14a8efd14fe \ No newline at end of file diff --git a/pom.xml b/pom.xml index d88f747..0401c32 100644 --- a/pom.xml +++ b/pom.xml @@ -204,7 +204,7 @@ UpdatePasswordDto=ua.rivnegray.boardgames_shop.DTO.request.update.UpdatePasswordDto UpdatePhoneDto=ua.rivnegray.boardgames_shop.DTO.request.update.UpdatePhoneDto UpdateRolesDto=ua.rivnegray.boardgames_shop.DTO.request.update.UpdateRolesDto - UpdateUsernameDto=ua.rivnegray.boardgames_shop.DTO.request.update.UpdateUsernameDto + UpdateNameAndSurnameDto=ua.rivnegray.boardgames_shop.DTO.request.update.UpdateNameAndSurnameDto AddressDto=ua.rivnegray.boardgames_shop.DTO.response.AddressDto UserPublicDto=ua.rivnegray.boardgames_shop.DTO.response.UserPublicDto UserRoleDto=ua.rivnegray.boardgames_shop.DTO.response.UserRoleDto diff --git a/src/main/java/generated/user/api/UsersApi.java b/src/main/java/generated/user/api/UsersApi.java index 2b3a20d..41e9f69 100644 --- a/src/main/java/generated/user/api/UsersApi.java +++ b/src/main/java/generated/user/api/UsersApi.java @@ -26,6 +26,7 @@ import ua.rivnegray.boardgames_shop.DTO.request.AddAndUpdateAddressDto; import ua.rivnegray.boardgames_shop.DTO.request.create.CreateAnyUserDto; import ua.rivnegray.boardgames_shop.DTO.request.update.UpdateEmailDto; +import ua.rivnegray.boardgames_shop.DTO.request.update.UpdateNameAndSurnameDto; import ua.rivnegray.boardgames_shop.DTO.request.update.UpdatePasswordDto; import ua.rivnegray.boardgames_shop.DTO.request.update.UpdatePhoneDto; import ua.rivnegray.boardgames_shop.DTO.response.AddressDto; @@ -417,6 +418,7 @@ default ResponseEntity removeAddress( /** * PATCH /users/me/address/{addressId} : Update my address + * Fields of the request body that are not specified will be ignored. So you can update only the fields you need. * * @param addressId (required) * @param addAndUpdateAddressDto (required) @@ -425,6 +427,7 @@ default ResponseEntity removeAddress( @Operation( operationId = "updateMyAddress", summary = "Update my address", + description = "Fields of the request body that are not specified will be ignored. So you can update only the fields you need.", responses = { @ApiResponse(responseCode = "200", description = "address updated", content = { @Content(mediaType = "application/json", schema = @Schema(implementation = UserPublicDto.class)) @@ -481,6 +484,38 @@ default ResponseEntity updateMyEmail( } + /** + * PATCH /users/me/nameAndSurname : Update my name and surname + * + * @param updateNameAndSurnameDto (required) + * @return name and surname updated (status code 200) + */ + @Operation( + operationId = "updateMyNameAndSurname", + summary = "Update my name and surname", + responses = { + @ApiResponse(responseCode = "200", description = "name and surname updated", content = { + @Content(mediaType = "application/json", schema = @Schema(implementation = UserPublicDto.class)) + }) + }, + security = { + @SecurityRequirement(name = "bearerAuth") + } + ) + @PreAuthorize("hasAuthority('SCOPE_user:updateMe')") + @RequestMapping( + method = RequestMethod.PATCH, + value = "/users/me/nameAndSurname", + produces = { "application/json" }, + consumes = { "application/json" } + ) + default ResponseEntity updateMyNameAndSurname( + @Parameter(name = "UpdateNameAndSurnameDto", description = "", required = true) @Valid @RequestBody UpdateNameAndSurnameDto updateNameAndSurnameDto + ) { + return getDelegate().updateMyNameAndSurname(updateNameAndSurnameDto); + } + + /** * PATCH /users/me/password : Update my user's password * diff --git a/src/main/java/generated/user/api/UsersApiDelegate.java b/src/main/java/generated/user/api/UsersApiDelegate.java index fc5ab1d..e586494 100644 --- a/src/main/java/generated/user/api/UsersApiDelegate.java +++ b/src/main/java/generated/user/api/UsersApiDelegate.java @@ -8,6 +8,7 @@ import ua.rivnegray.boardgames_shop.DTO.request.AddAndUpdateAddressDto; import ua.rivnegray.boardgames_shop.DTO.request.create.CreateAnyUserDto; import ua.rivnegray.boardgames_shop.DTO.request.update.UpdateEmailDto; +import ua.rivnegray.boardgames_shop.DTO.request.update.UpdateNameAndSurnameDto; import ua.rivnegray.boardgames_shop.DTO.request.update.UpdatePasswordDto; import ua.rivnegray.boardgames_shop.DTO.request.update.UpdatePhoneDto; import ua.rivnegray.boardgames_shop.DTO.response.AddressDto; @@ -256,6 +257,7 @@ default ResponseEntity removeAddress(Long addressId) { /** * PATCH /users/me/address/{addressId} : Update my address + * Fields of the request body that are not specified will be ignored. So you can update only the fields you need. * * @param addressId (required) * @param addAndUpdateAddressDto (required) @@ -298,6 +300,27 @@ default ResponseEntity updateMyEmail(UpdateEmailDto updateEmailDt } + /** + * PATCH /users/me/nameAndSurname : Update my name and surname + * + * @param updateNameAndSurnameDto (required) + * @return name and surname updated (status code 200) + * @see UsersApi#updateMyNameAndSurname + */ + default ResponseEntity updateMyNameAndSurname(UpdateNameAndSurnameDto updateNameAndSurnameDto) { + getRequest().ifPresent(request -> { + for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { + if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { + String exampleString = "{ \"firstName\" : \"firstName\", \"lastName\" : \"lastName\", \"addresses\" : [ { \"country\" : \"country\", \"city\" : \"city\", \"street\" : \"street\", \"postalCode\" : \"postalCode\", \"houseNumber\" : \"houseNumber\", \"id\" : 6 }, { \"country\" : \"country\", \"city\" : \"city\", \"street\" : \"street\", \"postalCode\" : \"postalCode\", \"houseNumber\" : \"houseNumber\", \"id\" : 6 } ], \"phone\" : \"phone\", \"roles\" : [ { \"permissions\" : [ null, null ], \"roleName\" : \"roleName\", \"id\" : 0 }, { \"permissions\" : [ null, null ], \"roleName\" : \"roleName\", \"id\" : 0 } ], \"email\" : \"email\", \"username\" : \"username\" }"; + ApiUtil.setExampleResponse(request, "application/json", exampleString); + break; + } + } + }); + return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); + + } + /** * PATCH /users/me/password : Update my user's password * diff --git a/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/LoginRequestDto.java b/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/LoginRequestDto.java index 47d546f..f784a37 100644 --- a/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/LoginRequestDto.java +++ b/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/LoginRequestDto.java @@ -9,7 +9,7 @@ public record LoginRequestDto( @NotBlank(message = "email is required") - @Email(regexp = ValidationConstants.emailRegex) + @Email(regexp = ValidationConstants.EMAIL) @Schema(example = "admin@rivnegray.ua") String email, diff --git a/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/RegisterCustomerRequestDto.java b/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/RegisterCustomerRequestDto.java index 1887391..d53e312 100644 --- a/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/RegisterCustomerRequestDto.java +++ b/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/RegisterCustomerRequestDto.java @@ -12,7 +12,7 @@ * DTO for {@link ua.rivnegray.boardgames_shop.model.User */ public record RegisterCustomerRequestDto( - @Email(regexp = ValidationConstants.emailRegex) + @Email(regexp = ValidationConstants.EMAIL) @NotBlank String email, @NotBlank diff --git a/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/create/CreateAnyUserDto.java b/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/create/CreateAnyUserDto.java index 46ffc26..102bc64 100644 --- a/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/create/CreateAnyUserDto.java +++ b/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/create/CreateAnyUserDto.java @@ -14,7 +14,7 @@ * DTO for {@link ua.rivnegray.boardgames_shop.model.User } */ public record CreateAnyUserDto( - @Email(regexp = ValidationConstants.emailRegex) + @Email(regexp = ValidationConstants.EMAIL) @NotNull String email, @Password diff --git a/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/update/UpdateEmailDto.java b/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/update/UpdateEmailDto.java index d62302a..7af8e66 100644 --- a/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/update/UpdateEmailDto.java +++ b/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/update/UpdateEmailDto.java @@ -8,5 +8,5 @@ /** * DTO for {@link ua.rivnegray.boardgames_shop.model.User} */ -public record UpdateEmailDto(@Email(regexp = ValidationConstants.emailRegex) String email) implements Serializable { +public record UpdateEmailDto(@Email(regexp = ValidationConstants.EMAIL) String email) implements Serializable { } diff --git a/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/update/UpdateNameAndSurnameDto.java b/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/update/UpdateNameAndSurnameDto.java new file mode 100644 index 0000000..ec64e0d --- /dev/null +++ b/src/main/java/ua/rivnegray/boardgames_shop/DTO/request/update/UpdateNameAndSurnameDto.java @@ -0,0 +1,8 @@ +package ua.rivnegray.boardgames_shop.DTO.request.update; + +import ua.rivnegray.boardgames_shop.utils.validation.annotation.NameAndSurname; + +public record UpdateNameAndSurnameDto( + @NameAndSurname + String nameAndSurname) { +} diff --git a/src/main/java/ua/rivnegray/boardgames_shop/delegateService/UserApiDelegateImpl.java b/src/main/java/ua/rivnegray/boardgames_shop/delegateService/UserApiDelegateImpl.java index 29db748..24d574d 100644 --- a/src/main/java/ua/rivnegray/boardgames_shop/delegateService/UserApiDelegateImpl.java +++ b/src/main/java/ua/rivnegray/boardgames_shop/delegateService/UserApiDelegateImpl.java @@ -9,6 +9,7 @@ import ua.rivnegray.boardgames_shop.DTO.request.AddAndUpdateAddressDto; import ua.rivnegray.boardgames_shop.DTO.request.create.CreateAnyUserDto; import ua.rivnegray.boardgames_shop.DTO.request.update.UpdateEmailDto; +import ua.rivnegray.boardgames_shop.DTO.request.update.UpdateNameAndSurnameDto; import ua.rivnegray.boardgames_shop.DTO.request.update.UpdatePasswordDto; import ua.rivnegray.boardgames_shop.DTO.request.update.UpdatePhoneDto; import ua.rivnegray.boardgames_shop.DTO.response.AddressDto; @@ -132,4 +133,9 @@ public ResponseEntity> getUsersByRole(String role) { public ResponseEntity> getAllUserRoles() { return ResponseEntity.ok(this.userService.getAllUserRoles()); } + + @Override + public ResponseEntity updateMyNameAndSurname(UpdateNameAndSurnameDto updateNameAndSurnameDto) { + return ResponseEntity.ok(this.userService.updateMyNameAndSurname(updateNameAndSurnameDto)); + } } diff --git a/src/main/java/ua/rivnegray/boardgames_shop/service/UserService.java b/src/main/java/ua/rivnegray/boardgames_shop/service/UserService.java index c131c78..cca85d2 100644 --- a/src/main/java/ua/rivnegray/boardgames_shop/service/UserService.java +++ b/src/main/java/ua/rivnegray/boardgames_shop/service/UserService.java @@ -5,6 +5,7 @@ import ua.rivnegray.boardgames_shop.DTO.request.AddAndUpdateAddressDto; import ua.rivnegray.boardgames_shop.DTO.request.create.CreateAnyUserDto; import ua.rivnegray.boardgames_shop.DTO.request.update.UpdateEmailDto; +import ua.rivnegray.boardgames_shop.DTO.request.update.UpdateNameAndSurnameDto; import ua.rivnegray.boardgames_shop.DTO.request.update.UpdatePasswordDto; import ua.rivnegray.boardgames_shop.DTO.request.update.UpdatePhoneDto; import ua.rivnegray.boardgames_shop.DTO.response.AddressDto; @@ -62,4 +63,6 @@ public interface UserService { @Transactional(readOnly = true) UserPublicDto getMyUserInfo(); + + UserPublicDto updateMyNameAndSurname(UpdateNameAndSurnameDto updateNameAndSurnameDto); } diff --git a/src/main/java/ua/rivnegray/boardgames_shop/service/impl/UserServiceImpl.java b/src/main/java/ua/rivnegray/boardgames_shop/service/impl/UserServiceImpl.java index 1704dab..8fb7479 100644 --- a/src/main/java/ua/rivnegray/boardgames_shop/service/impl/UserServiceImpl.java +++ b/src/main/java/ua/rivnegray/boardgames_shop/service/impl/UserServiceImpl.java @@ -9,6 +9,7 @@ import ua.rivnegray.boardgames_shop.DTO.request.AddAndUpdateAddressDto; import ua.rivnegray.boardgames_shop.DTO.request.create.CreateAnyUserDto; import ua.rivnegray.boardgames_shop.DTO.request.update.UpdateEmailDto; +import ua.rivnegray.boardgames_shop.DTO.request.update.UpdateNameAndSurnameDto; import ua.rivnegray.boardgames_shop.DTO.request.update.UpdatePasswordDto; import ua.rivnegray.boardgames_shop.DTO.request.update.UpdatePhoneDto; import ua.rivnegray.boardgames_shop.DTO.response.AddressDto; @@ -193,5 +194,13 @@ public List getAllMyAddresses() { } + @Override + public UserPublicDto updateMyNameAndSurname(UpdateNameAndSurnameDto updateNameAndSurnameDto) { + User userToUpdate = this.getCurrentUser(); + + userToUpdate.setFirstName(updateNameAndSurnameDto.nameAndSurname().trim().split(" ")[0]); + userToUpdate.setLastName(updateNameAndSurnameDto.nameAndSurname().trim().split(" ")[1]); + return this.userMapper.toUserPublicDto(this.userRepository.save(userToUpdate)); + } } diff --git a/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/ValidationConstants.java b/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/ValidationConstants.java index ab595d2..1b9550b 100644 --- a/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/ValidationConstants.java +++ b/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/ValidationConstants.java @@ -1,11 +1,13 @@ package ua.rivnegray.boardgames_shop.utils.validation; public final class ValidationConstants { - public static final String emailRegex = "(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])"; - public static final String phoneRegex = "^(\\+\\d{1,3}( )?)?((\\(\\d{3}\\))|\\d{3})[- .]?\\d{3}[- .]?\\d{4}$" + public static final String EMAIL = "(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])"; + public static final String PHONE = "^(\\+\\d{1,3}( )?)?((\\(\\d{3}\\))|\\d{3})[- .]?\\d{3}[- .]?\\d{4}$" + "|^(\\+\\d{1,3}( )?)?(\\d{3}[ ]?){2}\\d{3}$" + "|^(\\+\\d{1,3}( )?)?(\\d{3}[ ]?)(\\d{2}[ ]?){2}\\d{2}$"; - public static final String passwordRegex = "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$"; + public static final String PASSWORD = "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$"; + + public static final String NAME_AND_SURNAME = "^[A-Za-zА-Яа-я]+\\s[A-Za-zА-Яа-я]+$"; private ValidationConstants() { } diff --git a/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/annotation/NameAndSurname.java b/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/annotation/NameAndSurname.java new file mode 100644 index 0000000..bf3e9b5 --- /dev/null +++ b/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/annotation/NameAndSurname.java @@ -0,0 +1,21 @@ +package ua.rivnegray.boardgames_shop.utils.validation.annotation; + +import jakarta.validation.Constraint; +import jakarta.validation.Payload; +import ua.rivnegray.boardgames_shop.utils.validation.validator.NameAndSurnameValidator; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Documented +@Constraint(validatedBy = NameAndSurnameValidator.class) +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface NameAndSurname { + String message() default "Invalid name and surname format!"; + Class[] groups() default { }; + Class[] payload() default { }; +} diff --git a/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/validator/NameAndSurnameValidator.java b/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/validator/NameAndSurnameValidator.java new file mode 100644 index 0000000..3ee60b7 --- /dev/null +++ b/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/validator/NameAndSurnameValidator.java @@ -0,0 +1,22 @@ +package ua.rivnegray.boardgames_shop.utils.validation.validator; + +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; +import ua.rivnegray.boardgames_shop.utils.validation.ValidationConstants; +import ua.rivnegray.boardgames_shop.utils.validation.annotation.NameAndSurname; + +import java.util.regex.Pattern; + +public class NameAndSurnameValidator implements ConstraintValidator { + private Pattern pattern; + @Override + public void initialize(NameAndSurname constraintAnnotation) { + pattern = Pattern.compile(ValidationConstants.NAME_AND_SURNAME); + } + @Override + public boolean isValid(String nameAndSurname, ConstraintValidatorContext constraintValidatorContext) { + if (nameAndSurname == null) + return false; + return pattern.matcher(nameAndSurname).matches(); + } +} diff --git a/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/validator/PasswordValidator.java b/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/validator/PasswordValidator.java index 0ff1fc2..50416c9 100644 --- a/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/validator/PasswordValidator.java +++ b/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/validator/PasswordValidator.java @@ -12,7 +12,7 @@ public class PasswordValidator implements ConstraintValidator private Pattern pattern; @Override public void initialize(Password constraintAnnotation) { - pattern = Pattern.compile(ValidationConstants.passwordRegex); + pattern = Pattern.compile(ValidationConstants.PASSWORD); } @Override diff --git a/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/validator/PhoneValidator.java b/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/validator/PhoneValidator.java index 1cc447f..4736354 100644 --- a/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/validator/PhoneValidator.java +++ b/src/main/java/ua/rivnegray/boardgames_shop/utils/validation/validator/PhoneValidator.java @@ -11,7 +11,7 @@ public class PhoneValidator implements ConstraintValidator private Pattern pattern; @Override public void initialize(PhoneNumber constraintAnnotation) { - pattern = Pattern.compile(ValidationConstants.phoneRegex); + pattern = Pattern.compile(ValidationConstants.PHONE); } @Override diff --git a/src/main/resources/user.yaml b/src/main/resources/user.yaml index 826e45e..73895b8 100644 --- a/src/main/resources/user.yaml +++ b/src/main/resources/user.yaml @@ -190,6 +190,24 @@ paths: application/json: schema: $ref: '#/components/schemas/UserPublicDto' + /users/me/nameAndSurname: + patch: + summary: Update my name and surname + operationId: updateMyNameAndSurname + x-access-permission: user:updateMe + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateNameAndSurnameDto' + responses: + '200': + description: name and surname updated + content: + application/json: + schema: + $ref: '#/components/schemas/UserPublicDto' /users/me/address: post: summary: Add an address to me @@ -242,6 +260,7 @@ paths: $ref: '#/components/schemas/AddressDto' patch: summary: Update my address + description: Fields of the request body that are not specified will be ignored. So you can update only the fields you need. operationId: updateMyAddress x-access-permission: user:updateMe parameters: @@ -322,11 +341,11 @@ components: properties: phone: type: string - UpdateUsernameDto: + UpdateNicknameDto: type: object - x-java-type: ua.rivnegray.boardgames_shop.DTO.request.update.UpdateUsernameDto + x-java-type: ua.rivnegray.boardgames_shop.DTO.request.update.UpdateNickNameDto properties: - username: + NickName: type: string AddAndUpdateAddressDto: type: object @@ -403,6 +422,11 @@ components: - admin:read - admin:write + UpdateNameAndSurnameDto: + properties: + emptyValue: + type: boolean + securitySchemes: bearerAuth: type: http