Skip to content

Commit

Permalink
[SHIBUI-1058]
Browse files Browse the repository at this point in the history
Fixed the serviceEnabled json schema generation based on latest changes
for getting the current user.
  • Loading branch information
Bill Smith committed Jan 22, 2019
1 parent f6c2a69 commit 1d2138b
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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"])
Expand Down
Original file line number Diff line number Diff line change
@@ -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)
*/
Expand All @@ -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) {
Expand Down Expand Up @@ -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<String, String> 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<String, String> serviceEnabled = (HashMap) json['properties']['serviceEnabled']
serviceEnabled['type'] = 'hidden'
serviceEnabled.remove('title')
serviceEnabled.remove('description')
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}
}

0 comments on commit 1d2138b

Please sign in to comment.