package org.cloudfoundry.identity.uaa.zone;
import org.cloudfoundry.identity.uaa.client.ClientDetailsValidator;
import org.cloudfoundry.identity.uaa.client.ClientDetailsValidator.Mode;
import org.cloudfoundry.identity.uaa.approval.ApprovalStore;
import org.springframework.security.oauth2.provider.ClientDetails;
import org.springframework.security.oauth2.provider.ClientDetailsService;
import org.springframework.security.oauth2.provider.ClientRegistrationService;
public class IdentityZoneEndpointClientRegistrationService {
private final ClientRegistrationService clientRegistrationService;
private final ClientDetailsService clientDetailsService;
private final ClientDetailsValidator clientDetailsValidator;
private final ApprovalStore approvalStore;
public IdentityZoneEndpointClientRegistrationService(ClientRegistrationService clientRegistrationService,
ClientDetailsService clientDetailsService, ClientDetailsValidator clientDetailsValidator,
ApprovalStore approvalStore) {
super();
this.clientRegistrationService = clientRegistrationService;
this.clientDetailsService = clientDetailsService;
this.clientDetailsValidator = clientDetailsValidator;
this.approvalStore = approvalStore;
}
public ClientDetails createClient(ClientDetails clientDetails) {
ClientDetails validated = clientDetailsValidator.validate(clientDetails, Mode.CREATE);
clientRegistrationService.addClientDetails(validated);
return validated;
}
public ClientDetails deleteClient(String clientId) {
ClientDetails clientDetails = clientDetailsService.loadClientByClientId(clientId);
clientDetailsValidator.validate(clientDetails, Mode.DELETE);
clientRegistrationService.removeClientDetails(clientId);
approvalStore.revokeApprovalsForClient(clientId);
return clientDetails;
}
}