diff --git a/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/gen/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/AdminAdvisoryManagementApi.java b/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/gen/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/AdminAdvisoryManagementApi.java index 96dc26d344..340b530ae4 100644 --- a/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/gen/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/AdminAdvisoryManagementApi.java +++ b/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/gen/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/AdminAdvisoryManagementApi.java @@ -28,10 +28,13 @@ import org.wso2.carbon.identity.api.server.admin.advisory.management.v1.model.Error; import javax.validation.Valid; +import javax.ws.rs.Consumes; import javax.ws.rs.GET; +import javax.ws.rs.PATCH; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Response; +import io.swagger.annotations.ApiParam; /** * Admin Advisory Management API. @@ -60,4 +63,20 @@ public Response getAdminAdvisoryConfig() { return delegate.getAdminAdvisoryConfig(); } + @Valid + @PATCH + @Path("/banner") + @Consumes({ "application/json" }) + @Produces({ "application/json", "*/*" }) + @ApiOperation(value = "Update admin advisory banner related configurations.", notes = "Update admin advisory banner related configurations.
Permission required:
* None
Scope required:
* None requestBody: ", response = AdminAdvisoryConfig.class, tags={ "Management" }) + @ApiResponses(value = { + @ApiResponse(code = 200, message = "Admin advisory banner configuration.", response = AdminAdvisoryConfig.class), + @ApiResponse(code = 400, message = "Invalid input in the request.", response = Error.class), + @ApiResponse(code = 500, message = "Internal Server Error.", response = Error.class) + }) + public Response updateAdminAdvisoryConfig(@ApiParam(value = "" ,required=true) @Valid AdminAdvisoryConfig adminAdvisoryConfig) { + + return delegate.updateAdminAdvisoryConfig(adminAdvisoryConfig ); + } + } diff --git a/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/gen/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/AdminAdvisoryManagementApiService.java b/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/gen/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/AdminAdvisoryManagementApiService.java index 1099fc3608..fef7da88bb 100644 --- a/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/gen/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/AdminAdvisoryManagementApiService.java +++ b/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/gen/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/AdminAdvisoryManagementApiService.java @@ -18,6 +18,8 @@ package org.wso2.carbon.identity.api.server.admin.advisory.management.v1; +import org.wso2.carbon.identity.api.server.admin.advisory.management.v1.model.AdminAdvisoryConfig; + import javax.ws.rs.core.Response; /** @@ -26,4 +28,6 @@ public interface AdminAdvisoryManagementApiService { public Response getAdminAdvisoryConfig(); + + public Response updateAdminAdvisoryConfig(AdminAdvisoryConfig adminAdvisoryConfig); } diff --git a/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/main/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/core/ServerAdminAdvisoryManagementService.java b/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/main/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/core/ServerAdminAdvisoryManagementService.java index a3d23fa4ea..ae09572e39 100644 --- a/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/main/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/core/ServerAdminAdvisoryManagementService.java +++ b/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/main/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/core/ServerAdminAdvisoryManagementService.java @@ -19,6 +19,7 @@ package org.wso2.carbon.identity.api.server.admin.advisory.management.v1.core; import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.admin.advisory.mgt.dto.AdminAdvisoryBannerDTO; @@ -61,6 +62,29 @@ public AdminAdvisoryConfig getAdminAdvisoryConfig() { } } + /** + * Update admin advisory configuration. + * + * @param adminAdvisoryConfig Admin advisory configuration. + */ + public void saveAdminAdvisoryConfig(AdminAdvisoryConfig adminAdvisoryConfig) { + + try { + AdminAdvisoryManagementService adminAdvisoryManagementService = AdminAdvisoryManagementServiceHolder + .getAdminAdvisoryManagementService(); + AdminAdvisoryBannerDTO modifiedAdminAdvisoryBannerDTO = createModifiedAdminAdvisoryBannerDTO( + adminAdvisoryManagementService.getAdminAdvisoryConfig(), adminAdvisoryConfig); + + adminAdvisoryManagementService.saveAdminAdvisoryConfig(modifiedAdminAdvisoryBannerDTO); + + } catch (AdminAdvisoryMgtException e) { + AdminAdvisoryConstants.ErrorMessage errorEnum = + AdminAdvisoryConstants.ErrorMessage.ERROR_CODE_ERROR_RETRIEVING_BANNER_CONFIG; + Response.Status status = Response.Status.INTERNAL_SERVER_ERROR; + throw handleException(e, errorEnum, status); + } + } + private AdminAdvisoryConfig buildAdminAdvisoryConfigResponse(AdminAdvisoryBannerDTO adminAdvisoryBannerDTO) { AdminAdvisoryConfig adminAdvisoryConfig = new AdminAdvisoryConfig(); @@ -90,4 +114,35 @@ private String buildErrorDescription(AdminAdvisoryConstants.ErrorMessage errorEn } return errorEnum.getDescription(); } + + /** + * Create AdminAdvisoryBannerDTO for given admin advisory configurations. + * + * @param adminAdvisoryConfig Admin advisory configurations. + * @return AdminAdvisoryBannerDTO. + */ + private AdminAdvisoryBannerDTO createModifiedAdminAdvisoryBannerDTO(AdminAdvisoryBannerDTO + currentAdminAdvisoryBannerDTO, AdminAdvisoryConfig adminAdvisoryConfig) throws AdminAdvisoryMgtException { + + AdminAdvisoryBannerDTO modifiedAdminAdvisoryBannerDTO = new AdminAdvisoryBannerDTO(); + boolean isEnableBanner; + String bannerContent; + + if (adminAdvisoryConfig.getEnableBanner() == null) { + isEnableBanner = currentAdminAdvisoryBannerDTO.getEnableBanner(); + } else { + isEnableBanner = adminAdvisoryConfig.getEnableBanner(); + } + + if (StringUtils.isBlank(adminAdvisoryConfig.getBannerContent())) { + bannerContent = currentAdminAdvisoryBannerDTO.getBannerContent(); + } else { + bannerContent = adminAdvisoryConfig.getBannerContent(); + } + + modifiedAdminAdvisoryBannerDTO.setEnableBanner(isEnableBanner); + modifiedAdminAdvisoryBannerDTO.setBannerContent(bannerContent); + + return modifiedAdminAdvisoryBannerDTO; + } } diff --git a/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/main/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/impl/AdminAdvisoryManagementApiServiceImpl.java b/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/main/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/impl/AdminAdvisoryManagementApiServiceImpl.java index e6f6bd5ab9..ee7ee466c8 100644 --- a/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/main/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/impl/AdminAdvisoryManagementApiServiceImpl.java +++ b/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/main/java/org/wso2/carbon/identity/api/server/admin/advisory/management/v1/impl/AdminAdvisoryManagementApiServiceImpl.java @@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.wso2.carbon.identity.api.server.admin.advisory.management.v1.AdminAdvisoryManagementApiService; import org.wso2.carbon.identity.api.server.admin.advisory.management.v1.core.ServerAdminAdvisoryManagementService; +import org.wso2.carbon.identity.api.server.admin.advisory.management.v1.model.AdminAdvisoryConfig; import javax.ws.rs.core.Response; @@ -42,4 +43,18 @@ public Response getAdminAdvisoryConfig() { return Response.ok().entity(adminAdvisoryManagementService.getAdminAdvisoryConfig()).build(); } + + /** + * Endpoint to update the admin advisory banner configuration. + * + * @param adminAdvisoryConfig Admin advisory configuration. + * + * @return Response instance. + */ + @Override + public Response updateAdminAdvisoryConfig(AdminAdvisoryConfig adminAdvisoryConfig) { + + adminAdvisoryManagementService.saveAdminAdvisoryConfig(adminAdvisoryConfig); + return Response.ok().build(); + } } diff --git a/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/main/resources/admin-advisory-management.yaml b/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/main/resources/admin-advisory-management.yaml index 065b3f1e33..c838c103a6 100644 --- a/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/main/resources/admin-advisory-management.yaml +++ b/components/org.wso2.carbon.identity.api.server.admin.advisory.management/org.wso2.carbon.identity.api.server.admin.advisory.management.v1/src/main/resources/admin-advisory-management.yaml @@ -40,6 +40,35 @@ paths: $ref: '#/components/responses/BadRequest' '500': $ref: '#/components/responses/ServerError' + patch: + tags: + - Management + summary: Update admin advisory banner related configurations. + operationId: updateAdminAdvisoryConfig + description: | + Update admin advisory banner related configurations.
+ + Permission required:
+ * /permission/admin/manage/identity/configmgt/update
+ Scope required:
+ * internal_config_mgt_update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminAdvisoryConfig' + required: true + responses: + '200': + description: Admin advisory banner configuration. + content: + application/json: + schema: + $ref: '#/components/schemas/AdminAdvisoryConfig' + '400': + $ref: '#/components/responses/BadRequest' + '500': + $ref: '#/components/responses/ServerError' servers: - url: https://localhost:9443/t/{tenant-domain}/api/server/v1/