Browse Source

Added 'enabled' field to ClientRegistration

pull/3557/head
vzikratyi 6 years ago
parent
commit
e841f10b49
  1. 1
      application/src/main/data/upgrade/3.1.1/schema_update.sql
  2. 2
      common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientRegistration.java
  3. 1
      common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientsParams.java
  4. 1
      dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java
  5. 4
      dao/src/main/java/org/thingsboard/server/dao/model/sql/OAuth2ClientRegistrationEntity.java
  6. 1
      dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java
  7. 14
      dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Utils.java
  8. 1
      dao/src/main/resources/sql/schema-entities-hsql.sql
  9. 1
      dao/src/main/resources/sql/schema-entities.sql
  10. 30
      dao/src/test/java/org/thingsboard/server/dao/service/BaseOAuth2ServiceTest.java

1
application/src/main/data/upgrade/3.1.1/schema_update.sql

@ -18,6 +18,7 @@ DROP TABLE IF EXISTS oauth2_client_registration;
CREATE TABLE IF NOT EXISTS oauth2_client_registration (
id uuid NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY,
enabled boolean,
created_time bigint NOT NULL,
additional_info varchar,
domain_name varchar(255),

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

@ -34,6 +34,7 @@ import java.util.List;
@NoArgsConstructor
public class OAuth2ClientRegistration extends SearchTextBasedWithAdditionalInfo<OAuth2ClientRegistrationId> implements HasName {
private boolean enabled;
private String domainName;
private String redirectUriTemplate;
private OAuth2MapperConfig mapperConfig;
@ -51,6 +52,7 @@ public class OAuth2ClientRegistration extends SearchTextBasedWithAdditionalInfo<
public OAuth2ClientRegistration(OAuth2ClientRegistration clientRegistration) {
super(clientRegistration);
this.enabled = clientRegistration.enabled;
this.domainName = clientRegistration.domainName;
this.redirectUriTemplate = clientRegistration.redirectUriTemplate;
this.mapperConfig = clientRegistration.mapperConfig;

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

@ -29,5 +29,6 @@ import java.util.Objects;
@NoArgsConstructor
@AllArgsConstructor
public class OAuth2ClientsParams {
private boolean enabled;
private List<OAuth2ClientsDomainParams> oAuth2DomainDtos;
}

1
dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java

@ -358,6 +358,7 @@ public class ModelConstants {
* OAuth2 client registration constants.
*/
public static final String OAUTH2_TENANT_ID_PROPERTY = TENANT_ID_PROPERTY;
public static final String OAUTH2_ENABLED_PROPERTY = "enabled";
public static final String OAUTH2_CLIENT_REGISTRATION_COLUMN_FAMILY_NAME = "oauth2_client_registration";
public static final String OAUTH2_CLIENT_REGISTRATION_TEMPLATE_COLUMN_FAMILY_NAME = "oauth2_client_registration_template";
public static final String OAUTH2_TEMPLATE_PROVIDER_ID_PROPERTY = "provider_id";

4
dao/src/main/java/org/thingsboard/server/dao/model/sql/OAuth2ClientRegistrationEntity.java

@ -38,6 +38,8 @@ import java.util.UUID;
@Table(name = ModelConstants.OAUTH2_CLIENT_REGISTRATION_COLUMN_FAMILY_NAME)
public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRegistration> {
@Column(name = ModelConstants.OAUTH2_ENABLED_PROPERTY)
private Boolean enabled;
@Column(name = ModelConstants.OAUTH2_DOMAIN_NAME_PROPERTY)
private String domainName;
@Column(name = ModelConstants.OAUTH2_CLIENT_ID_PROPERTY)
@ -109,6 +111,7 @@ public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRe
if (clientRegistration.getId() != null) {
this.setUuid(clientRegistration.getId().getId());
}
this.enabled = clientRegistration.isEnabled();
this.domainName = clientRegistration.getDomainName();
this.createdTime = clientRegistration.getCreatedTime();
this.clientId = clientRegistration.getClientId();
@ -154,6 +157,7 @@ public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRe
public OAuth2ClientRegistration toData() {
OAuth2ClientRegistration clientRegistration = new OAuth2ClientRegistration();
clientRegistration.setId(new OAuth2ClientRegistrationId(id));
clientRegistration.setEnabled(enabled);
clientRegistration.setCreatedTime(createdTime);
clientRegistration.setDomainName(domainName);
clientRegistration.setAdditionalInfo(additionalInfo);

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

@ -48,6 +48,7 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
log.trace("Executing getOAuth2Clients [{}]", domainName);
validateString(domainName, INCORRECT_DOMAIN_NAME + domainName);
return clientRegistrationDao.findByDomainName(domainName).stream()
.filter(OAuth2ClientRegistration::isEnabled)
.map(OAuth2Utils::toClientInfo)
.collect(Collectors.toList());
}

14
dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Utils.java

@ -37,15 +37,19 @@ public class OAuth2Utils {
public static List<OAuth2ClientRegistration> toClientRegistrations(OAuth2ClientsParams oAuth2Params) {
return oAuth2Params.getOAuth2DomainDtos().stream()
.flatMap(domainParams -> domainParams.getClientRegistrations().stream()
.map(clientRegistrationDto -> OAuth2Utils.toClientRegistration(domainParams.getDomainName(),
domainParams.getRedirectUriTemplate(), clientRegistrationDto)
.map(clientRegistrationDto -> OAuth2Utils.toClientRegistration(oAuth2Params.isEnabled(),
domainParams.getDomainName(),
domainParams.getRedirectUriTemplate(),
clientRegistrationDto)
))
.collect(Collectors.toList());
}
public static OAuth2ClientsParams toOAuth2Params(List<OAuth2ClientRegistration> clientRegistrations) {
Map<String, OAuth2ClientsDomainParams> domainParamsMap = new HashMap<>();
boolean enabled = true;
for (OAuth2ClientRegistration clientRegistration : clientRegistrations) {
enabled = clientRegistration.isEnabled();
String domainName = clientRegistration.getDomainName();
OAuth2ClientsDomainParams domainParams = domainParamsMap.computeIfAbsent(domainName,
key -> new OAuth2ClientsDomainParams(domainName, clientRegistration.getRedirectUriTemplate(), new ArrayList<>())
@ -53,7 +57,7 @@ public class OAuth2Utils {
domainParams.getClientRegistrations()
.add(toClientRegistrationDto(clientRegistration));
}
return new OAuth2ClientsParams(new ArrayList<>(domainParamsMap.values()));
return new OAuth2ClientsParams(enabled, new ArrayList<>(domainParamsMap.values()));
}
public static ClientRegistrationDto toClientRegistrationDto(OAuth2ClientRegistration oAuth2ClientRegistration) {
@ -76,10 +80,12 @@ public class OAuth2Utils {
.build();
}
public static OAuth2ClientRegistration toClientRegistration(String domainName, String redirectUriTemplate,
private static OAuth2ClientRegistration toClientRegistration(boolean enabled, String domainName,
String redirectUriTemplate,
ClientRegistrationDto clientRegistrationDto) {
OAuth2ClientRegistration clientRegistration = new OAuth2ClientRegistration();
clientRegistration.setId(clientRegistrationDto.getId());
clientRegistration.setEnabled(enabled);
clientRegistration.setCreatedTime(clientRegistrationDto.getCreatedTime());
clientRegistration.setDomainName(domainName);
clientRegistration.setRedirectUriTemplate(redirectUriTemplate);

1
dao/src/main/resources/sql/schema-entities-hsql.sql

@ -293,6 +293,7 @@ CREATE TABLE IF NOT EXISTS ts_kv_dictionary (
CREATE TABLE IF NOT EXISTS oauth2_client_registration (
id uuid NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY,
enabled boolean,
created_time bigint NOT NULL,
additional_info varchar,
domain_name varchar(255),

1
dao/src/main/resources/sql/schema-entities.sql

@ -318,6 +318,7 @@ CREATE TABLE IF NOT EXISTS ts_kv_dictionary
CREATE TABLE IF NOT EXISTS oauth2_client_registration (
id uuid NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY,
enabled boolean,
created_time bigint NOT NULL,
additional_info varchar,
domain_name varchar(255),

30
dao/src/test/java/org/thingsboard/server/dao/service/BaseOAuth2ServiceTest.java

@ -86,7 +86,9 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
public void testGetOAuth2Clients() {
String testDomainName = "test_domain";
OAuth2ClientRegistration first = validClientRegistration(testDomainName);
first.setEnabled(true);
OAuth2ClientRegistration second = validClientRegistration(testDomainName);
second.setEnabled(true);
oAuth2Service.saveOAuth2Params(OAuth2Utils.toOAuth2Params(Collections.singletonList(first)));
oAuth2Service.saveOAuth2Params(OAuth2Utils.toOAuth2Params(Collections.singletonList(second)));
@ -153,7 +155,7 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
}
private OAuth2ClientRegistration validClientRegistration() {
return validClientRegistration("domainName");
return validClientRegistration(UUID.randomUUID().toString());
}
private OAuth2ClientRegistration validClientRegistration(String domainName) {
@ -166,23 +168,23 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
.type(MapperType.CUSTOM)
.custom(
OAuth2CustomMapperConfig.builder()
.url("localhost:8082")
.url("UUID.randomUUID().toString()")
.build()
)
.build()
);
clientRegistration.setClientId("clientId");
clientRegistration.setClientSecret("clientSecret");
clientRegistration.setAuthorizationUri("authorizationUri");
clientRegistration.setAccessTokenUri("tokenUri");
clientRegistration.setRedirectUriTemplate("redirectUriTemplate");
clientRegistration.setScope(Arrays.asList("scope1", "scope2"));
clientRegistration.setUserInfoUri("userInfoUri");
clientRegistration.setUserNameAttributeName("userNameAttributeName");
clientRegistration.setJwkSetUri("jwkSetUri");
clientRegistration.setClientAuthenticationMethod("clientAuthenticationMethod");
clientRegistration.setLoginButtonLabel("loginButtonLabel");
clientRegistration.setLoginButtonIcon("loginButtonIcon");
clientRegistration.setClientId(UUID.randomUUID().toString());
clientRegistration.setClientSecret(UUID.randomUUID().toString());
clientRegistration.setAuthorizationUri(UUID.randomUUID().toString());
clientRegistration.setAccessTokenUri(UUID.randomUUID().toString());
clientRegistration.setRedirectUriTemplate(UUID.randomUUID().toString());
clientRegistration.setScope(Arrays.asList(UUID.randomUUID().toString(), UUID.randomUUID().toString()));
clientRegistration.setUserInfoUri(UUID.randomUUID().toString());
clientRegistration.setUserNameAttributeName(UUID.randomUUID().toString());
clientRegistration.setJwkSetUri(UUID.randomUUID().toString());
clientRegistration.setClientAuthenticationMethod(UUID.randomUUID().toString());
clientRegistration.setLoginButtonLabel(UUID.randomUUID().toString());
clientRegistration.setLoginButtonIcon(UUID.randomUUID().toString());
clientRegistration.setAdditionalInfo(mapper.createObjectNode().put(UUID.randomUUID().toString(), UUID.randomUUID().toString()));
return clientRegistration;
}

Loading…
Cancel
Save