diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/user/UserController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/user/UserController.java index faa52dc3a..4263f3661 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/user/UserController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/user/UserController.java @@ -4,26 +4,43 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import ru.clearing.classes.statics.data.user.User; +import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController; +import ru.spcex.clearing.backendapi.controller.request.cud.utilities.UserAuthAction; +import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; +import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse; import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse; +import ru.spcex.clearing.backendapi.security.KeycloakUtils; +import ru.spcex.clearing.backendapi.service.IOperator; import ru.spcex.clearing.backendapi.service.IStateLoader; import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; import java.util.Collection; import java.util.Map; +import java.util.concurrent.ExecutionException; @Controller @RequestMapping("/users") -public class UserController { +public class UserController extends AbstractQueueController { private final IStateLoader stateLoader; + private final Imdg userImdg; @Autowired - public UserController(IStateLoader stateLoader) { + public UserController(IOperator operator, IStateLoader stateLoader, ImdgProvider imdgProvider) { + super(operator); this.stateLoader = stateLoader; + this.userImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_User, User.class); } @ApiOperation(value = "get all users.") @@ -36,4 +53,22 @@ public class UserController { response.fromEntity(all); return response; } + + + @ApiOperation(value = "update user") + @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)}) + @RequestMapping(method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + public CudResponse update( + @RequestBody UserAuthAction userAuthAction) throws ExecutionException, InterruptedException { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + String username = KeycloakUtils.getUserNameFromAuthentication(authentication); + User user = userImdg.getSingleObjectByFieldValues(Map.of("identifier", username)); + if (user == null) { + return processRequest(Consts.USER_AUTH_SUCCESS, userAuthAction); + } + throw new IllegalStateException("cannot create user cause it is exists: " + username); + } + + } diff --git a/clearing-parent/backend-api/src/main/resources/application.properties b/clearing-parent/backend-api/src/main/resources/application.properties index c375b65ed..bbbcc6022 100644 --- a/clearing-parent/backend-api/src/main/resources/application.properties +++ b/clearing-parent/backend-api/src/main/resources/application.properties @@ -5,20 +5,16 @@ server.ssl.key-store=classpath:keystore/client.p12 server.ssl.key-store-password=Aa123456 server.ssl.enabled=true spring.main.web-application-type=servlet - backend-api.example-setting=test - backend-api.hazelcast.cluster-members=127.0.0.1:5701 backend-api.hazelcast.login=dev backend-api.hazelcast.password=dev-pass - backend-api.kafka-producer.bootstrap-servers=localhost:9092 backend-api.kafka-producer.acks=all backend-api.kafka-producer.retries=0 backend-api.kafka-producer.batch-size=16384 backend-api.kafka-producer.linger-ms=1 backend-api.kafka-producer.buffer-memory=33554432 - backend-api.kafka-consumer.bootstrap-servers=localhost:9092 backend-api.kafka-consumer.group-id=dev-group-backend-api backend-api.kafka-consumer.enable-auto-commit=true @@ -26,10 +22,7 @@ backend-api.kafka-consumer.session-timeout-ms=30000 backend-api.kafka-consumer.auto-offset-reset=latest backend-api.kafka-consumer.linger-ms=1 backend-api.kafka-consumer.buffer-memory=33554432 - backend-api.security.authorization-disabled=false - - ##keycloak ##keycloak.auth-server-url=http://10.200.200.147:8080/ ##keycloak.realm=master diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/UserRoleSessionMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/UserRoleSessionMapStore.java index a3c64141d..f1f9cd4cf 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/UserRoleSessionMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/UserRoleSessionMapStore.java @@ -36,10 +36,11 @@ public class UserRoleSessionMapStore extends TemplateMapStore { @Override public UserRoleSession objectReader(ResultSet resultSet) throws SQLException { UserRoleSession object = new UserRoleSession(); + Long companyId = resultSet.getObject("COMPANY_ID", Long.class); object.setId(resultSet.getObject("ID", Long.class)); object.setUserId(resultSet.getObject("USER_ID", Long.class)); object.setUserRole(resultSet.getObject("USER_ROLE", String.class)); - object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class)); + object.setCompanyId(companyId.equals(0L) ? 1 : companyId); object.setStatus(resultSet.getObject("STATUS", String.class)); return object; } diff --git a/clearing-parent/imdg/src/main/resources/application.properties b/clearing-parent/imdg/src/main/resources/application.properties index 25d107bdb..da3db7cf0 100644 --- a/clearing-parent/imdg/src/main/resources/application.properties +++ b/clearing-parent/imdg/src/main/resources/application.properties @@ -4,4 +4,4 @@ imdg.hazelcast.password=dev-pass imdg.hazelcast.cluster-members[0]=127.0.0.1 imdg.database.login=clearing imdg.database.password=Aa111111 -imdg.database.url=jdbc:postgresql://10.200.200.133:5432/postgres \ No newline at end of file +imdg.database.url=jdbc:postgresql://10.200.200.133:5432/postgres?currentSchema=clearing_prod \ No newline at end of file