diff --git a/application/src/main/java/org/thingsboard/server/service/security/auth/oauth2/AbstractOAuth2ClientMapper.java b/application/src/main/java/org/thingsboard/server/service/security/auth/oauth2/AbstractOAuth2ClientMapper.java index e659e1fa96..22e679170c 100644 --- a/application/src/main/java/org/thingsboard/server/service/security/auth/oauth2/AbstractOAuth2ClientMapper.java +++ b/application/src/main/java/org/thingsboard/server/service/security/auth/oauth2/AbstractOAuth2ClientMapper.java @@ -31,9 +31,11 @@ import org.thingsboard.server.dao.customer.CustomerService; import org.thingsboard.server.dao.oauth2.OAuth2User; import org.thingsboard.server.dao.tenant.TenantService; import org.thingsboard.server.dao.user.UserService; +import org.thingsboard.server.service.install.InstallScripts; import org.thingsboard.server.service.security.model.SecurityUser; import org.thingsboard.server.service.security.model.UserPrincipal; +import java.io.IOException; import java.util.List; import java.util.Optional; import java.util.concurrent.locks.Lock; @@ -51,6 +53,9 @@ public abstract class AbstractOAuth2ClientMapper { @Autowired private CustomerService customerService; + @Autowired + private InstallScripts installScripts; + private final Lock userCreationLock = new ReentrantLock(); protected SecurityUser getOrCreateSecurityUserFromOAuth2User(OAuth2User oauth2User, boolean allowUserCreation) { @@ -84,6 +89,9 @@ public abstract class AbstractOAuth2ClientMapper { user.setLastName(oauth2User.getLastName()); user = userService.saveUser(user); } + } catch (Exception e) { + log.error("Can't get or create security user from oauth2 user", e); + throw new RuntimeException("Can't get or create security user from oauth2 user", e); } finally { userCreationLock.unlock(); } @@ -98,13 +106,14 @@ public abstract class AbstractOAuth2ClientMapper { } } - private TenantId getTenantId(String tenantName) { + private TenantId getTenantId(String tenantName) throws IOException { List tenants = tenantService.findTenants(new PageLink(1, 0, tenantName)).getData(); Tenant tenant; if (tenants == null || tenants.isEmpty()) { tenant = new Tenant(); tenant.setTitle(tenantName); tenant = tenantService.saveTenant(tenant); + installScripts.createDefaultRuleChains(tenant.getId()); } else { tenant = tenants.get(0); } diff --git a/pom.xml b/pom.xml index e70ae211cd..392e11b0ee 100755 --- a/pom.xml +++ b/pom.xml @@ -472,11 +472,23 @@ org.springframework.security spring-security-oauth2-client ${spring-security.version} + + + org.springframework + spring-core + + org.springframework.security spring-security-oauth2-jose ${spring-security.version} + + + org.springframework + spring-core + + org.springframework.boot