Browse Source

Changed OAuth2Service, clear Tenant oauth2 config on deletion

pull/3557/head
viktor 6 years ago
parent
commit
334361577f
  1. 5
      application/src/main/java/org/thingsboard/server/controller/AuthController.java
  2. 15
      common/dao-api/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Service.java
  3. 36
      common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientRegistration.java
  4. 18
      common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientsParams.java
  5. 41
      dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java
  6. 5
      dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java

5
application/src/main/java/org/thingsboard/server/controller/AuthController.java

@ -337,11 +337,12 @@ public class AuthController extends BaseController {
}
}
// TODO ask why POST
@RequestMapping(value = "/noauth/oauth2Clients", method = RequestMethod.POST)
@ResponseBody
public List<OAuth2ClientInfo> getOAuth2Clients() throws ThingsboardException {
public List<OAuth2ClientInfo> getOAuth2Clients(HttpServletRequest request) throws ThingsboardException {
try {
return oauth2Service.getOAuth2Clients();
return oauth2Service.getOAuth2Clients(request.getServerName());
} catch (Exception e) {
throw handleException(e);
}

15
common/dao-api/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Service.java

@ -26,25 +26,18 @@ import java.util.List;
public interface OAuth2Service {
OAuth2ClientRegistration getClientRegistration(String registrationId);
List<OAuth2ClientInfo> getOAuth2Clients();
List<OAuth2ClientInfo> getOAuth2Clients(String domainName);
List<OAuth2ClientRegistration> getSystemOAuth2ClientRegistrations(TenantId tenantId);
List<OAuth2ClientRegistration> getTenantOAuth2ClientRegistrations(TenantId tenantId);
List<OAuth2ClientRegistration> getCustomerOAuth2ClientRegistrations(TenantId tenantId, CustomerId customerId);
OAuth2ClientRegistration saveSystemOAuth2ClientRegistration(OAuth2ClientRegistration clientRegistration);
OAuth2ClientRegistration saveTenantOAuth2ClientRegistration(TenantId tenantId, OAuth2ClientRegistration clientRegistration);
OAuth2ClientRegistration saveCustomerOAuth2ClientRegistration(TenantId tenantId, CustomerId customerId, OAuth2ClientRegistration clientRegistration);
void deleteDomainOAuth2ClientRegistrationByEntityId(TenantId tenantId, EntityId entityId);
boolean isOAuth2ClientRegistrationAllowed(TenantId tenantId, EntityId entityId);
OAuth2ClientRegistration saveTenantOAuth2ClientRegistration(TenantId tenantId, String domainName, OAuth2ClientRegistration clientRegistration);
boolean isCustomerOAuth2ClientRegistrationAllowed(TenantId tenantId);
void deleteDomainOAuth2ClientRegistrationByTenant(TenantId tenantId);
boolean isOAuth2ClientRegistrationAllowed(TenantId tenantId);
}

36
common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientRegistration.java

@ -4,10 +4,13 @@ import lombok.*;
import org.thingsboard.server.common.data.BaseData;
import org.thingsboard.server.common.data.id.OAuth2IntegrationId;
@EqualsAndHashCode(callSuper = true)
@EqualsAndHashCode
@Data
@ToString(exclude = {"clientSecret"})
public class OAuth2ClientRegistration extends BaseData<OAuth2IntegrationId> {
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public class OAuth2ClientRegistration {
private String registrationId;
private OAuth2MapperConfig mapperConfig;
@ -25,33 +28,4 @@ public class OAuth2ClientRegistration extends BaseData<OAuth2IntegrationId> {
private String clientName;
private String loginButtonLabel;
private String loginButtonIcon;
public OAuth2ClientRegistration() {
super();
}
public OAuth2ClientRegistration(OAuth2IntegrationId id) {
super(id);
}
@Builder(toBuilder = true)
public OAuth2ClientRegistration(OAuth2IntegrationId id, String registrationId, String clientId, String clientSecret, String authorizationUri, String tokenUri, String redirectUriTemplate, String scope, String authorizationGrantType, String userInfoUri, String userNameAttributeName, String jwkSetUri, String clientAuthenticationMethod, String clientName, String loginButtonLabel, String loginButtonIcon, OAuth2MapperConfig mapperConfig) {
super(id);
this.registrationId = registrationId;
this.clientId = clientId;
this.clientSecret = clientSecret;
this.authorizationUri = authorizationUri;
this.tokenUri = tokenUri;
this.redirectUriTemplate = redirectUriTemplate;
this.scope = scope;
this.authorizationGrantType = authorizationGrantType;
this.userInfoUri = userInfoUri;
this.userNameAttributeName = userNameAttributeName;
this.jwkSetUri = jwkSetUri;
this.clientAuthenticationMethod = clientAuthenticationMethod;
this.clientName = clientName;
this.loginButtonLabel = loginButtonLabel;
this.loginButtonIcon = loginButtonIcon;
this.mapperConfig = mapperConfig;
}
}

18
common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientsParams.java

@ -0,0 +1,18 @@
package org.thingsboard.server.common.data.oauth2;
import lombok.*;
import java.util.List;
@EqualsAndHashCode
@Data
@ToString
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public class OAuth2ClientsParams {
private String domainName;
private String adminSettingsId;
private List<OAuth2ClientRegistration> clientRegistrations;
}

41
dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java

@ -17,12 +17,13 @@ package org.thingsboard.server.dao.oauth2;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.thingsboard.server.common.data.AdminSettings;
import org.thingsboard.server.common.data.id.AdminSettingsId;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.id.TenantId;
@ -32,8 +33,7 @@ import org.thingsboard.server.dao.settings.AdminSettingsService;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.UUID;
@Slf4j
@Service
@ -42,6 +42,7 @@ public class OAuth2ServiceImpl implements OAuth2Service {
private static final ObjectMapper mapper = new ObjectMapper();
private static final String OAUTH2_CLIENT_REGISTRATIONS_PARAMS = "oauth2ClientRegistrationsParams";
private static final String OAUTH2_CLIENT_REGISTRATIONS_DOMAIN_NAME_PREFIX = "oauth2ClientRegistrationsDomainNamePrefix";
private static final String OAUTH2_AUTHORIZATION_PATH_TEMPLATE = "/oauth2/authorization/%s";
@ -49,7 +50,7 @@ public class OAuth2ServiceImpl implements OAuth2Service {
private AdminSettingsService adminSettingsService;
@Override
public List<OAuth2ClientInfo> getOAuth2Clients() {
public List<OAuth2ClientInfo> getOAuth2Clients(String domainName) {
return Collections.emptyList();
}
@ -63,11 +64,6 @@ public class OAuth2ServiceImpl implements OAuth2Service {
return null;
}
@Override
public List<OAuth2ClientRegistration> getCustomerOAuth2ClientRegistrations(TenantId tenantId, CustomerId customerId) {
return null;
}
@Override
public OAuth2ClientRegistration saveSystemOAuth2ClientRegistration(OAuth2ClientRegistration clientRegistration) {
// TODO check by registration ID in entities
@ -93,28 +89,19 @@ public class OAuth2ServiceImpl implements OAuth2Service {
}
@Override
public OAuth2ClientRegistration saveTenantOAuth2ClientRegistration(TenantId tenantId, OAuth2ClientRegistration clientRegistration) {
public OAuth2ClientRegistration saveTenantOAuth2ClientRegistration(TenantId tenantId, String domainName, OAuth2ClientRegistration clientRegistration) {
// TODO ask what if tenant saves config for several different domain names, do we need to check it
// TODO check by registration ID in system
return null;
}
@Override
public OAuth2ClientRegistration saveCustomerOAuth2ClientRegistration(TenantId tenantId, CustomerId customerId, OAuth2ClientRegistration clientRegistration) {
return null;
}
@Override
public void deleteDomainOAuth2ClientRegistrationByEntityId(TenantId tenantId, EntityId entityId) {
public void deleteDomainOAuth2ClientRegistrationByTenant(TenantId tenantId) {
}
@Override
public boolean isOAuth2ClientRegistrationAllowed(TenantId tenantId, EntityId entityId) {
return false;
}
@Override
public boolean isCustomerOAuth2ClientRegistrationAllowed(TenantId tenantId) {
public boolean isOAuth2ClientRegistrationAllowed(TenantId tenantId) {
return false;
}
@ -122,4 +109,14 @@ public class OAuth2ServiceImpl implements OAuth2Service {
public OAuth2ClientRegistration getClientRegistration(String registrationId) {
return null;
}
private String constructClientRegistrationsKey(String domainName) {
String clientRegistrationsKey;
if (StringUtils.isEmpty(domainName)) {
clientRegistrationsKey = OAUTH2_CLIENT_REGISTRATIONS_PARAMS;
} else {
clientRegistrationsKey = OAUTH2_CLIENT_REGISTRATIONS_DOMAIN_NAME_PREFIX + "_" + domainName;
}
return clientRegistrationsKey;
}
}

5
dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java

@ -33,6 +33,7 @@ import org.thingsboard.server.dao.device.DeviceService;
import org.thingsboard.server.dao.entity.AbstractEntityService;
import org.thingsboard.server.dao.entityview.EntityViewService;
import org.thingsboard.server.dao.exception.DataValidationException;
import org.thingsboard.server.dao.oauth2.OAuth2Service;
import org.thingsboard.server.dao.rule.RuleChainService;
import org.thingsboard.server.dao.service.DataValidator;
import org.thingsboard.server.dao.service.PaginatedRemover;
@ -78,6 +79,9 @@ public class TenantServiceImpl extends AbstractEntityService implements TenantSe
@Autowired
private RuleChainService ruleChainService;
@Autowired
private OAuth2Service oAuth2Service;
@Override
public Tenant findTenantById(TenantId tenantId) {
log.trace("Executing findTenantById [{}]", tenantId);
@ -104,6 +108,7 @@ public class TenantServiceImpl extends AbstractEntityService implements TenantSe
public void deleteTenant(TenantId tenantId) {
log.trace("Executing deleteTenant [{}]", tenantId);
Validator.validateId(tenantId, INCORRECT_TENANT_ID + tenantId);
oAuth2Service.deleteDomainOAuth2ClientRegistrationByTenant(tenantId);
customerService.deleteCustomersByTenantId(tenantId);
widgetsBundleService.deleteWidgetsBundlesByTenantId(tenantId);
dashboardService.deleteDashboardsByTenantId(tenantId);

Loading…
Cancel
Save