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 extends Payload>[] 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