11 changed files with 6 additions and 663 deletions
@ -1,51 +0,0 @@ |
|||||
-- |
|
||||
-- Copyright © 2016-2020 The Thingsboard Authors |
|
||||
-- |
|
||||
-- Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
-- you may not use this file except in compliance with the License. |
|
||||
-- You may obtain a copy of the License at |
|
||||
-- |
|
||||
-- http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
-- |
|
||||
-- Unless required by applicable law or agreed to in writing, software |
|
||||
-- distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
-- See the License for the specific language governing permissions and |
|
||||
-- limitations under the License. |
|
||||
-- |
|
||||
|
|
||||
DROP TABLE IF EXISTS oauth2_client_registration; |
|
||||
|
|
||||
CREATE TABLE IF NOT EXISTS oauth2_client_registration ( |
|
||||
id varchar(31) NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY, |
|
||||
registration_id varchar(255), |
|
||||
client_id varchar(255), |
|
||||
client_secret varchar(255), |
|
||||
authorization_uri varchar(255), |
|
||||
token_uri varchar(255), |
|
||||
redirect_uri_template varchar(255), |
|
||||
scope varchar(255), |
|
||||
authorization_grant_type varchar(255), |
|
||||
user_info_uri varchar(255), |
|
||||
user_name_attribute_name varchar(255), |
|
||||
jwk_set_uri varchar(255), |
|
||||
client_authentication_method varchar(255), |
|
||||
client_name varchar(255), |
|
||||
login_button_label varchar(255), |
|
||||
login_button_icon varchar(255), |
|
||||
allow_user_creation boolean, |
|
||||
activate_user boolean, |
|
||||
type varchar(31), |
|
||||
basic_email_attribute_key varchar(31), |
|
||||
basic_first_name_attribute_key varchar(31), |
|
||||
basic_last_name_attribute_key varchar(31), |
|
||||
basic_tenant_name_strategy varchar(31), |
|
||||
basic_tenant_name_pattern varchar(255), |
|
||||
basic_customer_name_pattern varchar(255), |
|
||||
basic_default_dashboard_name varchar(255), |
|
||||
basic_always_full_screen boolean, |
|
||||
custom_url varchar(255), |
|
||||
custom_username varchar(255), |
|
||||
custom_password varchar(255), |
|
||||
CONSTRAINT oauth2_registration_id_unq_key UNIQUE (registration_id) |
|
||||
); |
|
||||
@ -1,30 +0,0 @@ |
|||||
/** |
|
||||
* Copyright © 2016-2020 The Thingsboard Authors |
|
||||
* |
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
* you may not use this file except in compliance with the License. |
|
||||
* You may obtain a copy of the License at |
|
||||
* |
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||
* |
|
||||
* Unless required by applicable law or agreed to in writing, software |
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
* See the License for the specific language governing permissions and |
|
||||
* limitations under the License. |
|
||||
*/ |
|
||||
package org.thingsboard.server.dao.oauth2; |
|
||||
|
|
||||
import org.thingsboard.server.common.data.oauth2.OAuth2ClientRegistration; |
|
||||
|
|
||||
import java.util.List; |
|
||||
|
|
||||
public interface OAuth2ClientRegistrationService { |
|
||||
OAuth2ClientRegistration saveClientRegistration(OAuth2ClientRegistration clientRegistration); |
|
||||
|
|
||||
List<OAuth2ClientRegistration> findClientRegistrations(); |
|
||||
|
|
||||
OAuth2ClientRegistration findClientRegistrationsByRegistrationId(String registrationId); |
|
||||
|
|
||||
void deleteClientRegistrationsByRegistrationId(String registrationId); |
|
||||
} |
|
||||
@ -1,194 +0,0 @@ |
|||||
/** |
|
||||
* Copyright © 2016-2020 The Thingsboard Authors |
|
||||
* |
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
* you may not use this file except in compliance with the License. |
|
||||
* You may obtain a copy of the License at |
|
||||
* |
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||
* |
|
||||
* Unless required by applicable law or agreed to in writing, software |
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
* See the License for the specific language governing permissions and |
|
||||
* limitations under the License. |
|
||||
*/ |
|
||||
package org.thingsboard.server.dao.model.sql; |
|
||||
|
|
||||
import lombok.Data; |
|
||||
import lombok.EqualsAndHashCode; |
|
||||
import org.hibernate.annotations.TypeDef; |
|
||||
import org.thingsboard.server.common.data.id.OAuth2IntegrationId; |
|
||||
import org.thingsboard.server.common.data.oauth2.*; |
|
||||
import org.thingsboard.server.dao.model.BaseSqlEntity; |
|
||||
import org.thingsboard.server.dao.model.ModelConstants; |
|
||||
import org.thingsboard.server.dao.util.mapping.JsonStringType; |
|
||||
|
|
||||
import javax.persistence.*; |
|
||||
|
|
||||
@Data |
|
||||
@EqualsAndHashCode(callSuper = true) |
|
||||
@Entity |
|
||||
@TypeDef(name = "json", typeClass = JsonStringType.class) |
|
||||
@Table(name = ModelConstants.OAUTH2_CLIENT_REGISTRATION_COLUMN_FAMILY_NAME) |
|
||||
public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRegistration> { |
|
||||
|
|
||||
@Column(name = ModelConstants.OAUTH2_CLIENT_REGISTRATION_ID_PROPERTY) |
|
||||
private String registrationId; |
|
||||
@Column(name = ModelConstants.OAUTH2_CLIENT_ID_PROPERTY) |
|
||||
private String clientId; |
|
||||
@Column(name = ModelConstants.OAUTH2_CLIENT_SECRET_PROPERTY) |
|
||||
private String clientSecret; |
|
||||
@Column(name = ModelConstants.OAUTH2_AUTHORIZATION_URI_PROPERTY) |
|
||||
private String authorizationUri; |
|
||||
@Column(name = ModelConstants.OAUTH2_TOKEN_URI_PROPERTY) |
|
||||
private String tokenUri; |
|
||||
@Column(name = ModelConstants.OAUTH2_REDIRECT_URI_TEMPLATE_PROPERTY) |
|
||||
private String redirectUriTemplate; |
|
||||
@Column(name = ModelConstants.OAUTH2_SCOPE_PROPERTY) |
|
||||
private String scope; |
|
||||
@Column(name = ModelConstants.OAUTH2_AUTHORIZATION_GRANT_TYPE_PROPERTY) |
|
||||
private String authorizationGrantType; |
|
||||
@Column(name = ModelConstants.OAUTH2_USER_INFO_URI_PROPERTY) |
|
||||
private String userInfoUri; |
|
||||
@Column(name = ModelConstants.OAUTH2_USER_NAME_ATTRIBUTE_NAME_PROPERTY) |
|
||||
private String userNameAttributeName; |
|
||||
@Column(name = ModelConstants.OAUTH2_JWK_SET_URI_PROPERTY) |
|
||||
private String jwkSetUri; |
|
||||
@Column(name = ModelConstants.OAUTH2_CLIENT_AUTHENTICATION_METHOD_PROPERTY) |
|
||||
private String clientAuthenticationMethod; |
|
||||
@Column(name = ModelConstants.OAUTH2_CLIENT_NAME_PROPERTY) |
|
||||
private String clientName; |
|
||||
@Column(name = ModelConstants.OAUTH2_LOGIN_BUTTON_LABEL_PROPERTY) |
|
||||
private String loginButtonLabel; |
|
||||
@Column(name = ModelConstants.OAUTH2_LOGIN_BUTTON_ICON_PROPERTY) |
|
||||
private String loginButtonIcon; |
|
||||
@Column(name = ModelConstants.OAUTH2_ALLOW_USER_CREATION_PROPERTY) |
|
||||
private Boolean allowUserCreation; |
|
||||
@Column(name = ModelConstants.OAUTH2_ACTIVATE_USER_PROPERTY) |
|
||||
private Boolean activateUser; |
|
||||
@Enumerated(EnumType.STRING) |
|
||||
@Column(name = ModelConstants.OAUTH2_MAPPER_TYPE_PROPERTY) |
|
||||
private MapperType type; |
|
||||
@Column(name = ModelConstants.OAUTH2_EMAIL_ATTRIBUTE_KEY_PROPERTY) |
|
||||
private String emailAttributeKey; |
|
||||
@Column(name = ModelConstants.OAUTH2_FIRST_NAME_ATTRIBUTE_KEY_PROPERTY) |
|
||||
private String firstNameAttributeKey; |
|
||||
@Column(name = ModelConstants.OAUTH2_LAST_NAME_ATTRIBUTE_KEY_PROPERTY) |
|
||||
private String lastNameAttributeKey; |
|
||||
@Enumerated(EnumType.STRING) |
|
||||
@Column(name = ModelConstants.OAUTH2_TENANT_NAME_STRATEGY_PROPERTY) |
|
||||
private TenantNameStrategyType tenantNameStrategy; |
|
||||
@Column(name = ModelConstants.OAUTH2_TENANT_NAME_PATTERN_PROPERTY) |
|
||||
private String tenantNamePattern; |
|
||||
@Column(name = ModelConstants.OAUTH2_CUSTOMER_NAME_PATTERN_PROPERTY) |
|
||||
private String customerNamePattern; |
|
||||
@Column(name = ModelConstants.OAUTH2_DEFAULT_DASHBOARD_NAME_PROPERTY) |
|
||||
private String defaultDashboardName; |
|
||||
@Column(name = ModelConstants.OAUTH2_ALWAYS_FULL_SCREEN_PROPERTY) |
|
||||
private Boolean alwaysFullScreen; |
|
||||
@Column(name = ModelConstants.OAUTH2_MAPPER_URL_PROPERTY) |
|
||||
private String url; |
|
||||
@Column(name = ModelConstants.OAUTH2_MAPPER_USERNAME_PROPERTY) |
|
||||
private String username; |
|
||||
@Column(name = ModelConstants.OAUTH2_MAPPER_PASSWORD_PROPERTY) |
|
||||
private String password; |
|
||||
|
|
||||
public OAuth2ClientRegistrationEntity() { |
|
||||
super(); |
|
||||
} |
|
||||
|
|
||||
public OAuth2ClientRegistrationEntity(OAuth2ClientRegistration clientRegistration) { |
|
||||
if (clientRegistration.getId() != null) { |
|
||||
this.setUuid(clientRegistration.getId().getId()); |
|
||||
} |
|
||||
this.registrationId = clientRegistration.getRegistrationId(); |
|
||||
this.clientId = clientRegistration.getClientId(); |
|
||||
this.clientSecret = clientRegistration.getClientSecret(); |
|
||||
this.authorizationUri = clientRegistration.getAuthorizationUri(); |
|
||||
this.tokenUri = clientRegistration.getTokenUri(); |
|
||||
this.redirectUriTemplate = clientRegistration.getRedirectUriTemplate(); |
|
||||
this.scope = clientRegistration.getScope(); |
|
||||
this.authorizationGrantType = clientRegistration.getAuthorizationGrantType(); |
|
||||
this.userInfoUri = clientRegistration.getUserInfoUri(); |
|
||||
this.userNameAttributeName = clientRegistration.getUserNameAttributeName(); |
|
||||
this.jwkSetUri = clientRegistration.getJwkSetUri(); |
|
||||
this.clientAuthenticationMethod = clientRegistration.getClientAuthenticationMethod(); |
|
||||
this.clientName = clientRegistration.getClientName(); |
|
||||
this.loginButtonLabel = clientRegistration.getLoginButtonLabel(); |
|
||||
this.loginButtonIcon = clientRegistration.getLoginButtonIcon(); |
|
||||
OAuth2MapperConfig mapperConfig = clientRegistration.getMapperConfig(); |
|
||||
if (mapperConfig != null) { |
|
||||
this.allowUserCreation = mapperConfig.isAllowUserCreation(); |
|
||||
this.activateUser = mapperConfig.isActivateUser(); |
|
||||
this.type = mapperConfig.getType(); |
|
||||
OAuth2BasicMapperConfig basicConfig = mapperConfig.getBasicConfig(); |
|
||||
if (basicConfig != null) { |
|
||||
this.emailAttributeKey = basicConfig.getEmailAttributeKey(); |
|
||||
this.firstNameAttributeKey = basicConfig.getFirstNameAttributeKey(); |
|
||||
this.lastNameAttributeKey = basicConfig.getLastNameAttributeKey(); |
|
||||
this.tenantNameStrategy = basicConfig.getTenantNameStrategy(); |
|
||||
this.tenantNamePattern = basicConfig.getTenantNamePattern(); |
|
||||
this.customerNamePattern = basicConfig.getCustomerNamePattern(); |
|
||||
this.defaultDashboardName = basicConfig.getDefaultDashboardName(); |
|
||||
this.alwaysFullScreen = basicConfig.isAlwaysFullScreen(); |
|
||||
} |
|
||||
OAuth2CustomMapperConfig customConfig = mapperConfig.getCustomConfig(); |
|
||||
if (customConfig != null) { |
|
||||
this.url = customConfig.getUrl(); |
|
||||
this.username = customConfig.getUsername(); |
|
||||
this.password = customConfig.getPassword(); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public OAuth2ClientRegistration toData() { |
|
||||
return OAuth2ClientRegistration.builder() |
|
||||
.id(new OAuth2IntegrationId(toUUID(id))) |
|
||||
.registrationId(registrationId) |
|
||||
.mapperConfig(OAuth2MapperConfig.builder() |
|
||||
.allowUserCreation(allowUserCreation) |
|
||||
.activateUser(activateUser) |
|
||||
.type(type) |
|
||||
.basicConfig( |
|
||||
type == MapperType.BASIC ? |
|
||||
OAuth2BasicMapperConfig.builder() |
|
||||
.emailAttributeKey(emailAttributeKey) |
|
||||
.firstNameAttributeKey(firstNameAttributeKey) |
|
||||
.lastNameAttributeKey(lastNameAttributeKey) |
|
||||
.tenantNameStrategy(tenantNameStrategy) |
|
||||
.tenantNamePattern(tenantNamePattern) |
|
||||
.customerNamePattern(customerNamePattern) |
|
||||
.defaultDashboardName(defaultDashboardName) |
|
||||
.alwaysFullScreen(alwaysFullScreen) |
|
||||
.build() |
|
||||
: null |
|
||||
) |
|
||||
.customConfig( |
|
||||
type == MapperType.CUSTOM ? |
|
||||
OAuth2CustomMapperConfig.builder() |
|
||||
.url(url) |
|
||||
.username(username) |
|
||||
.password(password) |
|
||||
.build() |
|
||||
: null |
|
||||
) |
|
||||
.build()) |
|
||||
.clientId(clientId) |
|
||||
.clientSecret(clientSecret) |
|
||||
.authorizationUri(authorizationUri) |
|
||||
.tokenUri(tokenUri) |
|
||||
.redirectUriTemplate(redirectUriTemplate) |
|
||||
.scope(scope) |
|
||||
.authorizationGrantType(authorizationGrantType) |
|
||||
.userInfoUri(userInfoUri) |
|
||||
.userNameAttributeName(userNameAttributeName) |
|
||||
.jwkSetUri(jwkSetUri) |
|
||||
.clientAuthenticationMethod(clientAuthenticationMethod) |
|
||||
.clientName(clientName) |
|
||||
.loginButtonLabel(loginButtonLabel) |
|
||||
.loginButtonIcon(loginButtonIcon) |
|
||||
.build(); |
|
||||
} |
|
||||
} |
|
||||
@ -1,15 +0,0 @@ |
|||||
package org.thingsboard.server.dao.oauth2; |
|
||||
|
|
||||
import org.thingsboard.server.common.data.oauth2.OAuth2ClientRegistration; |
|
||||
|
|
||||
import java.util.List; |
|
||||
|
|
||||
public interface OAuth2ClientRegistrationDao { |
|
||||
List<OAuth2ClientRegistration> find(); |
|
||||
|
|
||||
OAuth2ClientRegistration findByRegistrationId(String registrationId); |
|
||||
|
|
||||
OAuth2ClientRegistration save(OAuth2ClientRegistration clientRegistration); |
|
||||
|
|
||||
boolean removeByRegistrationId(String registrationId); |
|
||||
} |
|
||||
@ -1,148 +0,0 @@ |
|||||
/** |
|
||||
* Copyright © 2016-2020 The Thingsboard Authors |
|
||||
* |
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
* you may not use this file except in compliance with the License. |
|
||||
* You may obtain a copy of the License at |
|
||||
* |
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||
* |
|
||||
* Unless required by applicable law or agreed to in writing, software |
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
* See the License for the specific language governing permissions and |
|
||||
* limitations under the License. |
|
||||
*/ |
|
||||
package org.thingsboard.server.dao.oauth2; |
|
||||
|
|
||||
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.oauth2.*; |
|
||||
import org.thingsboard.server.dao.exception.DataValidationException; |
|
||||
|
|
||||
import java.util.List; |
|
||||
import java.util.function.Consumer; |
|
||||
|
|
||||
import static org.thingsboard.server.dao.service.Validator.validateId; |
|
||||
import static org.thingsboard.server.dao.service.Validator.validateString; |
|
||||
|
|
||||
@Slf4j |
|
||||
@Service |
|
||||
public class OAuth2ClientRegistrationServiceImpl implements OAuth2ClientRegistrationService { |
|
||||
public static final String INCORRECT_REGISTRATION_ID = "Incorrect registrationId "; |
|
||||
|
|
||||
@Autowired |
|
||||
private OAuth2ClientRegistrationDao clientRegistrationDao; |
|
||||
|
|
||||
@Override |
|
||||
public OAuth2ClientRegistration saveClientRegistration(OAuth2ClientRegistration clientRegistration) { |
|
||||
log.trace("Executing saveClientRegistration [{}]", clientRegistration); |
|
||||
// TODO add checking for duplicates and other validations
|
|
||||
return clientRegistrationDao.save(clientRegistration); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public List<OAuth2ClientRegistration> findClientRegistrations() { |
|
||||
log.trace("Executing findClientRegistrations []"); |
|
||||
return clientRegistrationDao.find(); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public OAuth2ClientRegistration findClientRegistrationsByRegistrationId(String registrationId) { |
|
||||
log.trace("Executing findClientRegistrationsByRegistrationId [{}]", registrationId); |
|
||||
validateString(registrationId, INCORRECT_REGISTRATION_ID + registrationId); |
|
||||
return clientRegistrationDao.findByRegistrationId(registrationId); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public void deleteClientRegistrationsByRegistrationId(String registrationId) { |
|
||||
log.trace("Executing deleteClientRegistrationsByRegistrationId [{}]", registrationId); |
|
||||
validateString(registrationId, INCORRECT_REGISTRATION_ID + registrationId); |
|
||||
clientRegistrationDao.removeByRegistrationId(registrationId); |
|
||||
} |
|
||||
|
|
||||
private Consumer<OAuth2ClientRegistration> validator = clientRegistration -> { |
|
||||
if (StringUtils.isEmpty(clientRegistration.getRegistrationId())) { |
|
||||
throw new DataValidationException("Registration ID should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(clientRegistration.getClientId())) { |
|
||||
throw new DataValidationException("Client ID should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(clientRegistration.getClientSecret())) { |
|
||||
throw new DataValidationException("Client secret should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(clientRegistration.getAuthorizationUri())) { |
|
||||
throw new DataValidationException("Authorization uri should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(clientRegistration.getTokenUri())) { |
|
||||
throw new DataValidationException("Token uri should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(clientRegistration.getRedirectUriTemplate())) { |
|
||||
throw new DataValidationException("Redirect uri template should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(clientRegistration.getScope())) { |
|
||||
throw new DataValidationException("Scope should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(clientRegistration.getAuthorizationGrantType())) { |
|
||||
throw new DataValidationException("Authorization grant type should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(clientRegistration.getUserInfoUri())) { |
|
||||
throw new DataValidationException("User info uri should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(clientRegistration.getUserNameAttributeName())) { |
|
||||
throw new DataValidationException("User name attribute name should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(clientRegistration.getJwkSetUri())) { |
|
||||
throw new DataValidationException("Jwk set uri should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(clientRegistration.getClientAuthenticationMethod())) { |
|
||||
throw new DataValidationException("Client authentication method should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(clientRegistration.getClientName())) { |
|
||||
throw new DataValidationException("Client name should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(clientRegistration.getLoginButtonLabel())) { |
|
||||
throw new DataValidationException("Login button label should be specified!"); |
|
||||
} |
|
||||
OAuth2MapperConfig mapperConfig = clientRegistration.getMapperConfig(); |
|
||||
if (mapperConfig == null) { |
|
||||
throw new DataValidationException("Mapper config should be specified!"); |
|
||||
} |
|
||||
if (mapperConfig.getType() == null) { |
|
||||
throw new DataValidationException("Mapper config type should be specified!"); |
|
||||
} |
|
||||
if (mapperConfig.getType() == MapperType.BASIC) { |
|
||||
OAuth2BasicMapperConfig basicConfig = mapperConfig.getBasicConfig(); |
|
||||
if (basicConfig == null) { |
|
||||
throw new DataValidationException("Basic config should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(basicConfig.getEmailAttributeKey())) { |
|
||||
throw new DataValidationException("Email attribute key should be specified!"); |
|
||||
} |
|
||||
if (basicConfig.getTenantNameStrategy() == null) { |
|
||||
throw new DataValidationException("Tenant name strategy should be specified!"); |
|
||||
} |
|
||||
if (basicConfig.getTenantNameStrategy() == TenantNameStrategyType.CUSTOM |
|
||||
&& StringUtils.isEmpty(basicConfig.getTenantNamePattern())) { |
|
||||
throw new DataValidationException("Tenant name pattern should be specified!"); |
|
||||
} |
|
||||
} |
|
||||
if (mapperConfig.getType() == MapperType.CUSTOM) { |
|
||||
OAuth2CustomMapperConfig customConfig = mapperConfig.getCustomConfig(); |
|
||||
if (customConfig == null) { |
|
||||
throw new DataValidationException("Custom config should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(customConfig.getUrl())) { |
|
||||
throw new DataValidationException("Custom mapper URL should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(customConfig.getUsername())) { |
|
||||
throw new DataValidationException("Custom mapper username should be specified!"); |
|
||||
} |
|
||||
if (StringUtils.isEmpty(customConfig.getPassword())) { |
|
||||
throw new DataValidationException("Custom mapper password should be specified!"); |
|
||||
} |
|
||||
} |
|
||||
}; |
|
||||
} |
|
||||
@ -1,77 +0,0 @@ |
|||||
/** |
|
||||
* Copyright © 2016-2020 The Thingsboard Authors |
|
||||
* |
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
* you may not use this file except in compliance with the License. |
|
||||
* You may obtain a copy of the License at |
|
||||
* |
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||
* |
|
||||
* Unless required by applicable law or agreed to in writing, software |
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
* See the License for the specific language governing permissions and |
|
||||
* limitations under the License. |
|
||||
*/ |
|
||||
package org.thingsboard.server.dao.sql.oauth2; |
|
||||
|
|
||||
import com.datastax.oss.driver.api.core.uuid.Uuids; |
|
||||
import com.google.common.collect.Lists; |
|
||||
import lombok.RequiredArgsConstructor; |
|
||||
import lombok.extern.slf4j.Slf4j; |
|
||||
import org.springframework.stereotype.Component; |
|
||||
import org.springframework.transaction.annotation.Transactional; |
|
||||
import org.thingsboard.server.common.data.oauth2.OAuth2ClientRegistration; |
|
||||
import org.thingsboard.server.dao.DaoUtil; |
|
||||
import org.thingsboard.server.dao.model.sql.OAuth2ClientRegistrationEntity; |
|
||||
import org.thingsboard.server.dao.oauth2.OAuth2ClientRegistrationDao; |
|
||||
import org.thingsboard.server.dao.util.SqlDao; |
|
||||
|
|
||||
import java.util.List; |
|
||||
import java.util.Optional; |
|
||||
|
|
||||
@Slf4j |
|
||||
@Component |
|
||||
@SqlDao |
|
||||
@RequiredArgsConstructor |
|
||||
public class JpaOAuth2ClientRegistrationDao implements OAuth2ClientRegistrationDao { |
|
||||
private final OAuth2ClientRegistrationRepository repository; |
|
||||
|
|
||||
@Override |
|
||||
@Transactional |
|
||||
public OAuth2ClientRegistration save(OAuth2ClientRegistration clientRegistration) { |
|
||||
OAuth2ClientRegistrationEntity entity; |
|
||||
try { |
|
||||
entity = new OAuth2ClientRegistrationEntity(clientRegistration); |
|
||||
} catch (Exception e) { |
|
||||
log.error("Can't create entity for domain object {}", clientRegistration, e); |
|
||||
throw new IllegalArgumentException("Can't create entity for domain object {" + clientRegistration + "}", e); |
|
||||
} |
|
||||
log.debug("Saving entity {}", entity); |
|
||||
if (entity.getUuid() == null) { |
|
||||
entity.setUuid(Uuids.timeBased()); |
|
||||
} |
|
||||
entity = repository.save(entity); |
|
||||
return DaoUtil.getData(entity); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public List<OAuth2ClientRegistration> find() { |
|
||||
List<OAuth2ClientRegistrationEntity> entities = Lists.newArrayList(repository.findAll()); |
|
||||
return DaoUtil.convertDataList(entities); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public OAuth2ClientRegistration findByRegistrationId(String registrationId) { |
|
||||
log.debug("Get entity by registration id {}", registrationId); |
|
||||
Optional<OAuth2ClientRegistrationEntity> entity = repository.findByRegistrationId(registrationId); |
|
||||
return DaoUtil.getData(entity); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public boolean removeByRegistrationId(String registrationId) { |
|
||||
repository.deleteByRegistrationId(registrationId); |
|
||||
log.debug("Remove request: {}", registrationId); |
|
||||
return !repository.existsByRegistrationId(registrationId); |
|
||||
} |
|
||||
} |
|
||||
@ -1,30 +0,0 @@ |
|||||
/** |
|
||||
* Copyright © 2016-2020 The Thingsboard Authors |
|
||||
* |
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
* you may not use this file except in compliance with the License. |
|
||||
* You may obtain a copy of the License at |
|
||||
* |
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||
* |
|
||||
* Unless required by applicable law or agreed to in writing, software |
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
* See the License for the specific language governing permissions and |
|
||||
* limitations under the License. |
|
||||
*/ |
|
||||
package org.thingsboard.server.dao.sql.oauth2; |
|
||||
|
|
||||
import org.springframework.data.repository.CrudRepository; |
|
||||
import org.thingsboard.server.dao.model.sql.OAuth2ClientRegistrationEntity; |
|
||||
import org.thingsboard.server.dao.util.SqlDao; |
|
||||
|
|
||||
import java.util.Optional; |
|
||||
|
|
||||
@SqlDao |
|
||||
public interface OAuth2ClientRegistrationRepository extends CrudRepository<OAuth2ClientRegistrationEntity, String> { |
|
||||
Optional<OAuth2ClientRegistrationEntity> findByRegistrationId(String registrationId); |
|
||||
int deleteByRegistrationId(String registrationId); |
|
||||
boolean existsByRegistrationId(String registrationId); |
|
||||
|
|
||||
} |
|
||||
Loading…
Reference in new issue