Skip to content
This repository has been archived by the owner on Jun 7, 2024. It is now read-only.

Commit

Permalink
Merge pull request #1024 from zalando/cache-admins
Browse files Browse the repository at this point in the history
Cache admins and don't check VIEW for publish endpoint
  • Loading branch information
ferbncode authored Feb 21, 2019
2 parents 7d2b13c + 3a8dbfe commit 625c300
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import org.springframework.web.context.request.NativeWebRequest;
import org.zalando.nakadi.domain.EventPublishResult;
import org.zalando.nakadi.domain.EventPublishingStatus;
import org.zalando.nakadi.domain.EventType;
import org.zalando.nakadi.exceptions.runtime.AccessDeniedException;
import org.zalando.nakadi.exceptions.runtime.BlockedException;
import org.zalando.nakadi.exceptions.runtime.EventTypeTimeoutException;
Expand All @@ -25,10 +24,8 @@
import org.zalando.nakadi.metrics.EventTypeMetricRegistry;
import org.zalando.nakadi.metrics.EventTypeMetrics;
import org.zalando.nakadi.security.Client;
import org.zalando.nakadi.service.AuthorizationValidator;
import org.zalando.nakadi.service.BlacklistService;
import org.zalando.nakadi.service.EventPublisher;
import org.zalando.nakadi.service.EventTypeService;
import org.zalando.nakadi.service.NakadiKpiPublisher;

import java.util.concurrent.TimeUnit;
Expand All @@ -49,25 +46,19 @@ public class EventPublishingController {
private final BlacklistService blacklistService;
private final NakadiKpiPublisher nakadiKpiPublisher;
private final String kpiBatchPublishedEventType;
private final EventTypeService eventTypeService;
private final AuthorizationValidator authorizationValidator;

@Autowired
public EventPublishingController(final EventPublisher publisher,
final EventTypeMetricRegistry eventTypeMetricRegistry,
final BlacklistService blacklistService,
final NakadiKpiPublisher nakadiKpiPublisher,
@Value("${nakadi.kpi.event-types.nakadiBatchPublished}")
final String kpiBatchPublishedEventType,
final AuthorizationValidator authorizationValidator,
final EventTypeService eventTypeService) {
final String kpiBatchPublishedEventType) {
this.publisher = publisher;
this.eventTypeMetricRegistry = eventTypeMetricRegistry;
this.blacklistService = blacklistService;
this.nakadiKpiPublisher = nakadiKpiPublisher;
this.kpiBatchPublishedEventType = kpiBatchPublishedEventType;
this.eventTypeService = eventTypeService;
this.authorizationValidator = authorizationValidator;
}

@RequestMapping(value = "/event-types/{eventTypeName}/events", method = POST)
Expand All @@ -79,9 +70,6 @@ public ResponseEntity postEvent(@PathVariable final String eventTypeName,
InternalNakadiException, EventTypeTimeoutException, NoSuchEventTypeException {
LOG.trace("Received event {} for event type {}", eventsAsString, eventTypeName);

final EventType eventType = eventTypeService.get(eventTypeName);
authorizationValidator.authorizeEventTypeView(eventType);

final EventTypeMetrics eventTypeMetrics = eventTypeMetricRegistry.metricsFor(eventTypeName);

if (blacklistService.isProductionBlocked(eventTypeName, client.getClientId())) {
Expand Down
8 changes: 6 additions & 2 deletions src/main/java/org/zalando/nakadi/service/AdminService.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,16 @@ public AdminService(final AuthorizationDbRepository authorizationDbRepository,
this.authorizationService = authorizationService;
this.featureToggleService = featureToggleService;
this.nakadiSettings = nakadiSettings;
this.resourceCache = CacheBuilder.newBuilder().expireAfterWrite(1, TimeUnit.MINUTES).build();
this.resourceCache = CacheBuilder.newBuilder().expireAfterWrite(5, TimeUnit.MINUTES).build();
this.auditLogPublisher = auditLogPublisher;
}

public List<Permission> getAdmins() {
return addDefaultAdmin(authorizationDbRepository.listAdmins());
try {
return addDefaultAdmin(resourceCache.get(ADMIN_RESOURCE, authorizationDbRepository::listAdmins));
} catch (ExecutionException e) {
return addDefaultAdmin(authorizationDbRepository.listAdmins());
}
}

public void updateAdmins(final List<Permission> newAdmins)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,8 @@
import org.zalando.nakadi.metrics.EventTypeMetrics;
import org.zalando.nakadi.plugin.api.authz.AuthorizationService;
import org.zalando.nakadi.security.ClientResolver;
import org.zalando.nakadi.service.AuthorizationValidator;
import org.zalando.nakadi.service.BlacklistService;
import org.zalando.nakadi.service.EventPublisher;
import org.zalando.nakadi.service.EventTypeService;
import org.zalando.nakadi.service.NakadiKpiPublisher;
import org.zalando.nakadi.utils.TestUtils;

Expand Down Expand Up @@ -75,8 +73,6 @@ public class EventPublishingControllerTest {
private NakadiKpiPublisher kpiPublisher;
private BlacklistService blacklistService;
private AuthorizationService authorizationService;
private EventTypeService eventTypeService;
private AuthorizationValidator authorizationValidator;

@Before
public void setUp() {
Expand All @@ -86,8 +82,6 @@ public void setUp() {
kpiPublisher = mock(NakadiKpiPublisher.class);
settings = mock(SecuritySettings.class);
authorizationService = mock(AuthorizationService.class);
eventTypeService = mock(EventTypeService.class);
authorizationValidator = mock(AuthorizationValidator.class);
when(authorizationService.getSubject()).thenReturn(Optional.of(() -> "adminClientId"));
when(settings.getAuthMode()).thenReturn(OFF);
when(settings.getAdminClientId()).thenReturn("adminClientId");
Expand All @@ -97,7 +91,7 @@ public void setUp() {

final EventPublishingController controller =
new EventPublishingController(publisher, eventTypeMetricRegistry, blacklistService, kpiPublisher,
"kpiEventTypeName", authorizationValidator, eventTypeService);
"kpiEventTypeName");

mockMvc = standaloneSetup(controller)
.setMessageConverters(new StringHttpMessageConverter(), TestUtils.JACKSON_2_HTTP_MESSAGE_CONVERTER)
Expand Down

0 comments on commit 625c300

Please sign in to comment.