From 1d2138b6f49531a79b3d0fc20378bab64fed1568 Mon Sep 17 00:00:00 2001 From: Bill Smith Date: Tue, 22 Jan 2019 10:49:34 -0700 Subject: [PATCH] [SHIBUI-1058] Fixed the serviceEnabled json schema generation based on latest changes for getting the current user. --- ...tadataSourcesUiDefinitionController.groovy | 5 ++- .../service/JsonSchemaBuilderService.groovy | 31 ++++++++----------- .../JsonSchemaComponentsConfiguration.java | 5 +-- 3 files changed, 18 insertions(+), 23 deletions(-) diff --git a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataSourcesUiDefinitionController.groovy b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataSourcesUiDefinitionController.groovy index d9b72fa45..6fa503fcc 100644 --- a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataSourcesUiDefinitionController.groovy +++ b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataSourcesUiDefinitionController.groovy @@ -13,7 +13,6 @@ import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController import javax.annotation.PostConstruct -import java.security.Principal import static edu.internet2.tier.shibboleth.admin.ui.jsonschema.JsonSchemaLocationLookup.metadataSourcesSchema import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR @@ -43,10 +42,10 @@ class MetadataSourcesUiDefinitionController { JsonSchemaBuilderService jsonSchemaBuilderService @GetMapping - ResponseEntity getUiDefinitionJsonSchema(Principal principal) { + ResponseEntity getUiDefinitionJsonSchema() { try { def parsedJson = jacksonObjectMapper.readValue(this.jsonSchemaLocation.url, Map) - jsonSchemaBuilderService.hideServiceEnabledFromNonAdmins(parsedJson, principal) + jsonSchemaBuilderService.hideServiceEnabledFromNonAdmins(parsedJson) jsonSchemaBuilderService.addReleaseAttributesToJson(parsedJson['properties']['attributeRelease']['widget']) jsonSchemaBuilderService.addRelyingPartyOverridesToJson(parsedJson['properties']['relyingPartyOverrides']) jsonSchemaBuilderService.addRelyingPartyOverridesCollectionDefinitionsToJson(parsedJson["definitions"]) diff --git a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JsonSchemaBuilderService.groovy b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JsonSchemaBuilderService.groovy index 8a4fccbf3..b386db9c7 100644 --- a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JsonSchemaBuilderService.groovy +++ b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JsonSchemaBuilderService.groovy @@ -1,13 +1,10 @@ package edu.internet2.tier.shibboleth.admin.ui.service import edu.internet2.tier.shibboleth.admin.ui.configuration.CustomPropertiesConfiguration -import edu.internet2.tier.shibboleth.admin.ui.security.repository.UserRepository -import groovy.json.JsonOutput -import org.apache.commons.lang.StringUtils +import edu.internet2.tier.shibboleth.admin.ui.security.model.User +import edu.internet2.tier.shibboleth.admin.ui.security.service.UserService import org.springframework.beans.factory.annotation.Autowired -import java.security.Principal - /** * @author Bill Smith (wsmith@unicon.net) */ @@ -16,10 +13,10 @@ class JsonSchemaBuilderService { @Autowired CustomPropertiesConfiguration customPropertiesConfiguration - UserRepository userRepository; + UserService userService - JsonSchemaBuilderService(UserRepository userRepository) { - this.userRepository = userRepository + JsonSchemaBuilderService(UserService userService) { + this.userService = userService } void addReleaseAttributesToJson(Object json) { @@ -74,16 +71,14 @@ class JsonSchemaBuilderService { } } - void hideServiceEnabledFromNonAdmins(Map json, Principal principal) { - if (principal != null && StringUtils.isNotBlank(principal.getName())) { - def user = userRepository.findByUsername(principal.getName()) - if (user.isPresent() && user.get().role != 'ROLE_ADMIN') { - // user isn't an admin, so hide 'ServiceEnabled' - Map serviceEnabled = (HashMap) json['properties']['serviceEnabled'] - serviceEnabled['type'] = 'hidden' - serviceEnabled.remove('title') - serviceEnabled.remove('description') - } + void hideServiceEnabledFromNonAdmins(Map json) { + User currentUser = userService.getCurrentUser() + if (currentUser != null && currentUser.role != 'ROLE_ADMIN') { + // user isn't an admin, so hide 'ServiceEnabled' + Map serviceEnabled = (HashMap) json['properties']['serviceEnabled'] + serviceEnabled['type'] = 'hidden' + serviceEnabled.remove('title') + serviceEnabled.remove('description') } } } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/JsonSchemaComponentsConfiguration.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/JsonSchemaComponentsConfiguration.java index 3346c35a9..3f507a929 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/JsonSchemaComponentsConfiguration.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/JsonSchemaComponentsConfiguration.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import edu.internet2.tier.shibboleth.admin.ui.jsonschema.JsonSchemaResourceLocationRegistry; import edu.internet2.tier.shibboleth.admin.ui.security.repository.UserRepository; +import edu.internet2.tier.shibboleth.admin.ui.security.service.UserService; import edu.internet2.tier.shibboleth.admin.ui.service.JsonSchemaBuilderService; import lombok.Setter; import org.springframework.beans.factory.annotation.Autowired; @@ -101,7 +102,7 @@ public JsonSchemaResourceLocationRegistry jsonSchemaResourceLocationRegistry(Res } @Bean - public JsonSchemaBuilderService jsonSchemaBuilderService() { - return new JsonSchemaBuilderService(userRepository); + public JsonSchemaBuilderService jsonSchemaBuilderService(UserService userService) { + return new JsonSchemaBuilderService(userService); } }