Commit 1b53971eb5426c65d02b00ef2a3597e47809d445

Authored by Vladyslav_Prykhodko
2 parents 3816172b e778b315

Merge branch 'feature/dynamic-oauth2-new-table' of https://github.com/vzikratyi-…

…tb/thingsboard into feature/dynamic-oauth2-new-table
Showing 28 changed files with 118 additions and 498 deletions
@@ -20,7 +20,6 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration ( @@ -20,7 +20,6 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration (
20 id uuid NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY, 20 id uuid NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY,
21 created_time bigint NOT NULL, 21 created_time bigint NOT NULL,
22 additional_info varchar, 22 additional_info varchar,
23 - tenant_id uuid,  
24 domain_name varchar(255), 23 domain_name varchar(255),
25 client_id varchar(255), 24 client_id varchar(255),
26 client_secret varchar(255), 25 client_secret varchar(255),
@@ -57,7 +56,6 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration_template ( @@ -57,7 +56,6 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration_template (
57 id uuid NOT NULL CONSTRAINT oauth2_client_registration_template_pkey PRIMARY KEY, 56 id uuid NOT NULL CONSTRAINT oauth2_client_registration_template_pkey PRIMARY KEY,
58 created_time bigint NOT NULL, 57 created_time bigint NOT NULL,
59 additional_info varchar, 58 additional_info varchar,
60 - tenant_id uuid,  
61 provider_id varchar(255), 59 provider_id varchar(255),
62 authorization_uri varchar(255), 60 authorization_uri varchar(255),
63 token_uri varchar(255), 61 token_uri varchar(255),
@@ -27,19 +27,7 @@ import org.springframework.beans.factory.annotation.Value; @@ -27,19 +27,7 @@ import org.springframework.beans.factory.annotation.Value;
27 import org.springframework.security.core.Authentication; 27 import org.springframework.security.core.Authentication;
28 import org.springframework.security.core.context.SecurityContextHolder; 28 import org.springframework.security.core.context.SecurityContextHolder;
29 import org.springframework.web.bind.annotation.ExceptionHandler; 29 import org.springframework.web.bind.annotation.ExceptionHandler;
30 -import org.thingsboard.server.common.data.Customer;  
31 -import org.thingsboard.server.common.data.Dashboard;  
32 -import org.thingsboard.server.common.data.DashboardInfo;  
33 -import org.thingsboard.server.common.data.DataConstants;  
34 -import org.thingsboard.server.common.data.Device;  
35 -import org.thingsboard.server.common.data.DeviceInfo;  
36 -import org.thingsboard.server.common.data.EntityType;  
37 -import org.thingsboard.server.common.data.EntityView;  
38 -import org.thingsboard.server.common.data.EntityViewInfo;  
39 -import org.thingsboard.server.common.data.HasName;  
40 -import org.thingsboard.server.common.data.HasTenantId;  
41 -import org.thingsboard.server.common.data.Tenant;  
42 -import org.thingsboard.server.common.data.User; 30 +import org.thingsboard.server.common.data.*;
43 import org.thingsboard.server.common.data.alarm.Alarm; 31 import org.thingsboard.server.common.data.alarm.Alarm;
44 import org.thingsboard.server.common.data.alarm.AlarmInfo; 32 import org.thingsboard.server.common.data.alarm.AlarmInfo;
45 import org.thingsboard.server.common.data.asset.Asset; 33 import org.thingsboard.server.common.data.asset.Asset;
@@ -50,8 +38,6 @@ import org.thingsboard.server.common.data.exception.ThingsboardException; @@ -50,8 +38,6 @@ import org.thingsboard.server.common.data.exception.ThingsboardException;
50 import org.thingsboard.server.common.data.id.*; 38 import org.thingsboard.server.common.data.id.*;
51 import org.thingsboard.server.common.data.kv.AttributeKvEntry; 39 import org.thingsboard.server.common.data.kv.AttributeKvEntry;
52 import org.thingsboard.server.common.data.kv.DataType; 40 import org.thingsboard.server.common.data.kv.DataType;
53 -import org.thingsboard.server.common.data.oauth2.OAuth2ClientRegistration;  
54 -import org.thingsboard.server.common.data.oauth2.OAuth2ClientRegistrationTemplate;  
55 import org.thingsboard.server.common.data.page.PageLink; 41 import org.thingsboard.server.common.data.page.PageLink;
56 import org.thingsboard.server.common.data.page.SortOrder; 42 import org.thingsboard.server.common.data.page.SortOrder;
57 import org.thingsboard.server.common.data.page.TimePageLink; 43 import org.thingsboard.server.common.data.page.TimePageLink;
@@ -388,10 +374,7 @@ public abstract class BaseController { @@ -388,10 +374,7 @@ public abstract class BaseController {
388 checkWidgetTypeId(new WidgetTypeId(entityId.getId()), operation); 374 checkWidgetTypeId(new WidgetTypeId(entityId.getId()), operation);
389 return; 375 return;
390 case OAUTH2_CLIENT_REGISTRATION: 376 case OAUTH2_CLIENT_REGISTRATION:
391 - checkOAuth2ClientRegistrationId(new OAuth2ClientRegistrationId(entityId.getId()), operation);  
392 - return;  
393 case OAUTH2_CLIENT_REGISTRATION_TEMPLATE: 377 case OAUTH2_CLIENT_REGISTRATION_TEMPLATE:
394 - checkOAuth2ClientRegistrationTemplateId(new OAuth2ClientRegistrationTemplateId(entityId.getId()), operation);  
395 return; 378 return;
396 default: 379 default:
397 throw new IllegalArgumentException("Unsupported entity type: " + entityId.getEntityType()); 380 throw new IllegalArgumentException("Unsupported entity type: " + entityId.getEntityType());
@@ -545,30 +528,6 @@ public abstract class BaseController { @@ -545,30 +528,6 @@ public abstract class BaseController {
545 } 528 }
546 } 529 }
547 530
548 - OAuth2ClientRegistration checkOAuth2ClientRegistrationId(OAuth2ClientRegistrationId clientRegistrationId, Operation operation) throws ThingsboardException {  
549 - try {  
550 - validateId(clientRegistrationId, "Incorrect oAuth2ClientRegistrationId " + clientRegistrationId);  
551 - OAuth2ClientRegistration clientRegistration = oAuth2Service.findClientRegistration(clientRegistrationId.getId());  
552 - checkNotNull(clientRegistration);  
553 - accessControlService.checkPermission(getCurrentUser(), Resource.OAUTH2_CONFIGURATION, operation, clientRegistrationId, clientRegistration);  
554 - return clientRegistration;  
555 - } catch (Exception e) {  
556 - throw handleException(e, false);  
557 - }  
558 - }  
559 -  
560 - OAuth2ClientRegistrationTemplate checkOAuth2ClientRegistrationTemplateId(OAuth2ClientRegistrationTemplateId clientRegistrationTemplateId, Operation operation) throws ThingsboardException {  
561 - try {  
562 - validateId(clientRegistrationTemplateId, "Incorrect oAuth2ClientRegistrationTemplateId " + clientRegistrationTemplateId);  
563 - OAuth2ClientRegistrationTemplate clientRegistrationTemplate = oAuth2ConfigTemplateService.findClientRegistrationTemplateById(clientRegistrationTemplateId);  
564 - checkNotNull(clientRegistrationTemplate);  
565 - accessControlService.checkPermission(getCurrentUser(), Resource.OAUTH2_CONFIGURATION_TEMPLATE, operation, clientRegistrationTemplateId, clientRegistrationTemplate);  
566 - return clientRegistrationTemplate;  
567 - } catch (Exception e) {  
568 - throw handleException(e, false);  
569 - }  
570 - }  
571 -  
572 ComponentDescriptor checkComponentDescriptorByClazz(String clazz) throws ThingsboardException { 531 ComponentDescriptor checkComponentDescriptorByClazz(String clazz) throws ThingsboardException {
573 try { 532 try {
574 log.debug("[{}] Lookup component descriptor", clazz); 533 log.debug("[{}] Lookup component descriptor", clazz);
@@ -25,8 +25,6 @@ import org.thingsboard.server.common.data.exception.ThingsboardException; @@ -25,8 +25,6 @@ import org.thingsboard.server.common.data.exception.ThingsboardException;
25 import org.thingsboard.server.common.data.id.OAuth2ClientRegistrationTemplateId; 25 import org.thingsboard.server.common.data.id.OAuth2ClientRegistrationTemplateId;
26 import org.thingsboard.server.common.data.oauth2.OAuth2ClientRegistrationTemplate; 26 import org.thingsboard.server.common.data.oauth2.OAuth2ClientRegistrationTemplate;
27 import org.thingsboard.server.queue.util.TbCoreComponent; 27 import org.thingsboard.server.queue.util.TbCoreComponent;
28 -import org.thingsboard.server.service.security.permission.Operation;  
29 -import org.thingsboard.server.service.security.permission.Resource;  
30 28
31 import java.util.List; 29 import java.util.List;
32 30
@@ -42,8 +40,6 @@ public class OAuth2ConfigTemplateController extends BaseController { @@ -42,8 +40,6 @@ public class OAuth2ConfigTemplateController extends BaseController {
42 @ResponseStatus(value = HttpStatus.OK) 40 @ResponseStatus(value = HttpStatus.OK)
43 public OAuth2ClientRegistrationTemplate saveClientRegistrationTemplate(@RequestBody OAuth2ClientRegistrationTemplate clientRegistrationTemplate) throws ThingsboardException { 41 public OAuth2ClientRegistrationTemplate saveClientRegistrationTemplate(@RequestBody OAuth2ClientRegistrationTemplate clientRegistrationTemplate) throws ThingsboardException {
44 try { 42 try {
45 - clientRegistrationTemplate.setTenantId(getCurrentUser().getTenantId());  
46 - checkEntity(clientRegistrationTemplate.getId(), clientRegistrationTemplate, Resource.OAUTH2_CONFIGURATION_TEMPLATE);  
47 return oAuth2ConfigTemplateService.saveClientRegistrationTemplate(clientRegistrationTemplate); 43 return oAuth2ConfigTemplateService.saveClientRegistrationTemplate(clientRegistrationTemplate);
48 } catch (Exception e) { 44 } catch (Exception e) {
49 throw handleException(e); 45 throw handleException(e);
@@ -57,10 +53,10 @@ public class OAuth2ConfigTemplateController extends BaseController { @@ -57,10 +53,10 @@ public class OAuth2ConfigTemplateController extends BaseController {
57 checkParameter(CLIENT_REGISTRATION_TEMPLATE_ID, strClientRegistrationTemplateId); 53 checkParameter(CLIENT_REGISTRATION_TEMPLATE_ID, strClientRegistrationTemplateId);
58 try { 54 try {
59 OAuth2ClientRegistrationTemplateId clientRegistrationTemplateId = new OAuth2ClientRegistrationTemplateId(toUUID(strClientRegistrationTemplateId)); 55 OAuth2ClientRegistrationTemplateId clientRegistrationTemplateId = new OAuth2ClientRegistrationTemplateId(toUUID(strClientRegistrationTemplateId));
60 - OAuth2ClientRegistrationTemplate clientRegistrationTemplate = checkOAuth2ClientRegistrationTemplateId(clientRegistrationTemplateId, Operation.DELETE);  
61 oAuth2ConfigTemplateService.deleteClientRegistrationTemplateById(clientRegistrationTemplateId); 56 oAuth2ConfigTemplateService.deleteClientRegistrationTemplateById(clientRegistrationTemplateId);
62 57
63 - logEntityAction(clientRegistrationTemplateId, clientRegistrationTemplate, 58 + logEntityAction(clientRegistrationTemplateId,
  59 + null,
64 null, 60 null,
65 ActionType.DELETED, null, strClientRegistrationTemplateId); 61 ActionType.DELETED, null, strClientRegistrationTemplateId);
66 62
@@ -80,14 +76,9 @@ public class OAuth2ConfigTemplateController extends BaseController { @@ -80,14 +76,9 @@ public class OAuth2ConfigTemplateController extends BaseController {
80 @ResponseBody 76 @ResponseBody
81 public List<OAuth2ClientRegistrationTemplate> getClientRegistrationTemplates() throws ThingsboardException { 77 public List<OAuth2ClientRegistrationTemplate> getClientRegistrationTemplates() throws ThingsboardException {
82 try { 78 try {
83 - checkOAuth2ConfigTemplatePermissions(Operation.READ);  
84 return oAuth2ConfigTemplateService.findAllClientRegistrationTemplates(); 79 return oAuth2ConfigTemplateService.findAllClientRegistrationTemplates();
85 } catch (Exception e) { 80 } catch (Exception e) {
86 throw handleException(e); 81 throw handleException(e);
87 } 82 }
88 } 83 }
89 -  
90 - private void checkOAuth2ConfigTemplatePermissions(Operation operation) throws ThingsboardException {  
91 - accessControlService.checkPermission(getCurrentUser(), Resource.OAUTH2_CONFIGURATION_TEMPLATE, operation);  
92 - }  
93 } 84 }
@@ -23,16 +23,12 @@ import org.thingsboard.server.common.data.EntityType; @@ -23,16 +23,12 @@ import org.thingsboard.server.common.data.EntityType;
23 import org.thingsboard.server.common.data.audit.ActionType; 23 import org.thingsboard.server.common.data.audit.ActionType;
24 import org.thingsboard.server.common.data.exception.ThingsboardException; 24 import org.thingsboard.server.common.data.exception.ThingsboardException;
25 import org.thingsboard.server.common.data.id.OAuth2ClientRegistrationId; 25 import org.thingsboard.server.common.data.id.OAuth2ClientRegistrationId;
26 -import org.thingsboard.server.common.data.id.TenantId;  
27 -import org.thingsboard.server.common.data.oauth2.*;  
28 -import org.thingsboard.server.common.data.security.Authority; 26 +import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
  27 +import org.thingsboard.server.common.data.oauth2.OAuth2ClientsDomainParams;
29 import org.thingsboard.server.queue.util.TbCoreComponent; 28 import org.thingsboard.server.queue.util.TbCoreComponent;
30 -import org.thingsboard.server.service.security.permission.Operation;  
31 -import org.thingsboard.server.service.security.permission.Resource;  
32 29
33 import javax.servlet.http.HttpServletRequest; 30 import javax.servlet.http.HttpServletRequest;
34 import java.util.List; 31 import java.util.List;
35 -import java.util.stream.Collectors;  
36 32
37 @RestController 33 @RestController
38 @TbCoreComponent 34 @TbCoreComponent
@@ -52,62 +48,39 @@ public class OAuth2Controller extends BaseController { @@ -52,62 +48,39 @@ public class OAuth2Controller extends BaseController {
52 } 48 }
53 } 49 }
54 50
55 - @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')") 51 + @PreAuthorize("hasAnyAuthority('SYS_ADMIN')")
56 @RequestMapping(value = "/oauth2/config", method = RequestMethod.GET, produces = "application/json") 52 @RequestMapping(value = "/oauth2/config", method = RequestMethod.GET, produces = "application/json")
57 @ResponseBody 53 @ResponseBody
58 public List<OAuth2ClientsDomainParams> getCurrentClientsParams() throws ThingsboardException { 54 public List<OAuth2ClientsDomainParams> getCurrentClientsParams() throws ThingsboardException {
59 try { 55 try {
60 - Authority authority = getCurrentUser().getAuthority();  
61 - checkOAuth2ConfigPermissions(Operation.READ);  
62 - if (Authority.SYS_ADMIN.equals(authority)) {  
63 - return oAuth2Service.findDomainsParamsByTenantId(TenantId.SYS_TENANT_ID);  
64 - } else if (Authority.TENANT_ADMIN.equals(authority)) {  
65 - return oAuth2Service.findDomainsParamsByTenantId(getCurrentUser().getTenantId());  
66 - } else {  
67 - throw new IllegalStateException("Authority " + authority + " cannot get client registrations.");  
68 - } 56 + return oAuth2Service.findDomainsParams();
69 } catch (Exception e) { 57 } catch (Exception e) {
70 throw handleException(e); 58 throw handleException(e);
71 } 59 }
72 } 60 }
73 61
74 - @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')") 62 + @PreAuthorize("hasAnyAuthority('SYS_ADMIN')")
75 @RequestMapping(value = "/oauth2/config", method = RequestMethod.POST) 63 @RequestMapping(value = "/oauth2/config", method = RequestMethod.POST)
76 @ResponseStatus(value = HttpStatus.OK) 64 @ResponseStatus(value = HttpStatus.OK)
77 public List<OAuth2ClientsDomainParams> saveClientParams(@RequestBody List<OAuth2ClientsDomainParams> domainsParams) throws ThingsboardException { 65 public List<OAuth2ClientsDomainParams> saveClientParams(@RequestBody List<OAuth2ClientsDomainParams> domainsParams) throws ThingsboardException {
78 try { 66 try {
79 - TenantId tenantId;  
80 - Authority authority = getCurrentUser().getAuthority();  
81 - if (Authority.SYS_ADMIN.equals(authority)) {  
82 - tenantId = TenantId.SYS_TENANT_ID;  
83 - } else if (Authority.TENANT_ADMIN.equals(authority)) {  
84 - tenantId = getCurrentUser().getTenantId();  
85 - } else {  
86 - throw new IllegalStateException("Authority " + authority + " cannot save client registrations.");  
87 - }  
88 - List<ClientRegistrationDto> clientRegistrationDtos = domainsParams.stream()  
89 - .flatMap(domainParams -> domainParams.getClientRegistrations().stream())  
90 - .collect(Collectors.toList());  
91 - for (ClientRegistrationDto clientRegistrationDto : clientRegistrationDtos) {  
92 - checkEntity(clientRegistrationDto.getId(), () -> tenantId, Resource.OAUTH2_CONFIGURATION);  
93 - }  
94 - return oAuth2Service.saveDomainsParams(tenantId, domainsParams); 67 + return oAuth2Service.saveDomainsParams(domainsParams);
95 } catch (Exception e) { 68 } catch (Exception e) {
96 throw handleException(e); 69 throw handleException(e);
97 } 70 }
98 } 71 }
99 72
100 - @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')") 73 + @PreAuthorize("hasAnyAuthority('SYS_ADMIN')")
101 @RequestMapping(value = "/oauth2/config/{clientRegistrationId}", method = RequestMethod.DELETE) 74 @RequestMapping(value = "/oauth2/config/{clientRegistrationId}", method = RequestMethod.DELETE)
102 @ResponseStatus(value = HttpStatus.OK) 75 @ResponseStatus(value = HttpStatus.OK)
103 public void deleteClientRegistration(@PathVariable(CLIENT_REGISTRATION_ID) String strClientRegistrationId) throws ThingsboardException { 76 public void deleteClientRegistration(@PathVariable(CLIENT_REGISTRATION_ID) String strClientRegistrationId) throws ThingsboardException {
104 checkParameter(CLIENT_REGISTRATION_ID, strClientRegistrationId); 77 checkParameter(CLIENT_REGISTRATION_ID, strClientRegistrationId);
105 try { 78 try {
106 OAuth2ClientRegistrationId clientRegistrationId = new OAuth2ClientRegistrationId(toUUID(strClientRegistrationId)); 79 OAuth2ClientRegistrationId clientRegistrationId = new OAuth2ClientRegistrationId(toUUID(strClientRegistrationId));
107 - OAuth2ClientRegistration clientRegistration = checkOAuth2ClientRegistrationId(clientRegistrationId, Operation.DELETE);  
108 - oAuth2Service.deleteClientRegistrationById(getCurrentUser().getTenantId(), clientRegistrationId); 80 + oAuth2Service.deleteClientRegistrationById(clientRegistrationId);
109 81
110 - logEntityAction(clientRegistrationId, clientRegistration, 82 + logEntityAction(clientRegistrationId,
  83 + null,
111 null, 84 null,
112 ActionType.DELETED, null, strClientRegistrationId); 85 ActionType.DELETED, null, strClientRegistrationId);
113 86
@@ -123,13 +96,13 @@ public class OAuth2Controller extends BaseController { @@ -123,13 +96,13 @@ public class OAuth2Controller extends BaseController {
123 } 96 }
124 97
125 98
126 - @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')") 99 + @PreAuthorize("hasAnyAuthority('SYS_ADMIN')")
127 @RequestMapping(value = "/oauth2/config/domain/{domain}", method = RequestMethod.DELETE) 100 @RequestMapping(value = "/oauth2/config/domain/{domain}", method = RequestMethod.DELETE)
128 @ResponseStatus(value = HttpStatus.OK) 101 @ResponseStatus(value = HttpStatus.OK)
129 public void deleteClientRegistrationForDomain(@PathVariable(DOMAIN) String domain) throws ThingsboardException { 102 public void deleteClientRegistrationForDomain(@PathVariable(DOMAIN) String domain) throws ThingsboardException {
130 checkParameter(DOMAIN, domain); 103 checkParameter(DOMAIN, domain);
131 try { 104 try {
132 - oAuth2Service.deleteClientRegistrationsByDomain(getCurrentUser().getTenantId(), domain); 105 + oAuth2Service.deleteClientRegistrationsByDomain(domain);
133 106
134 logEntityAction(emptyId(EntityType.OAUTH2_CLIENT_REGISTRATION), null, 107 logEntityAction(emptyId(EntityType.OAUTH2_CLIENT_REGISTRATION), null,
135 null, 108 null,
@@ -144,19 +117,4 @@ public class OAuth2Controller extends BaseController { @@ -144,19 +117,4 @@ public class OAuth2Controller extends BaseController {
144 throw handleException(e); 117 throw handleException(e);
145 } 118 }
146 } 119 }
147 -  
148 - @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')")  
149 - @RequestMapping(value = "/oauth2/config/isAllowed", method = RequestMethod.GET)  
150 - @ResponseBody  
151 - public Boolean isOAuth2ConfigurationAllowed() throws ThingsboardException {  
152 - try {  
153 - return oAuth2Service.isOAuth2ClientRegistrationAllowed(getTenantId());  
154 - } catch (Exception e) {  
155 - throw handleException(e);  
156 - }  
157 - }  
158 -  
159 - private void checkOAuth2ConfigPermissions(Operation operation) throws ThingsboardException {  
160 - accessControlService.checkPermission(getCurrentUser(), Resource.OAUTH2_CONFIGURATION, operation);  
161 - }  
162 } 120 }
@@ -224,7 +224,6 @@ public class InstallScripts { @@ -224,7 +224,6 @@ public class InstallScripts {
224 try { 224 try {
225 JsonNode oauth2ConfigTemplateJson = objectMapper.readTree(path.toFile()); 225 JsonNode oauth2ConfigTemplateJson = objectMapper.readTree(path.toFile());
226 OAuth2ClientRegistrationTemplate clientRegistrationTemplate = objectMapper.treeToValue(oauth2ConfigTemplateJson, OAuth2ClientRegistrationTemplate.class); 226 OAuth2ClientRegistrationTemplate clientRegistrationTemplate = objectMapper.treeToValue(oauth2ConfigTemplateJson, OAuth2ClientRegistrationTemplate.class);
227 - clientRegistrationTemplate.setTenantId(TenantId.SYS_TENANT_ID);  
228 oAuth2TemplateService.saveClientRegistrationTemplate(clientRegistrationTemplate); 227 oAuth2TemplateService.saveClientRegistrationTemplate(clientRegistrationTemplate);
229 } catch (Exception e) { 228 } catch (Exception e) {
230 log.error("Unable to load oauth2 config templates from json: [{}]", path.toString()); 229 log.error("Unable to load oauth2 config templates from json: [{}]", path.toString());
@@ -17,7 +17,6 @@ package org.thingsboard.server.service.security.auth.oauth2; @@ -17,7 +17,6 @@ package org.thingsboard.server.service.security.auth.oauth2;
17 17
18 import com.fasterxml.jackson.databind.ObjectMapper; 18 import com.fasterxml.jackson.databind.ObjectMapper;
19 import com.fasterxml.jackson.databind.node.ObjectNode; 19 import com.fasterxml.jackson.databind.node.ObjectNode;
20 -import com.google.common.base.Strings;  
21 import lombok.extern.slf4j.Slf4j; 20 import lombok.extern.slf4j.Slf4j;
22 import org.springframework.beans.factory.annotation.Autowired; 21 import org.springframework.beans.factory.annotation.Autowired;
23 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; 22 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -34,7 +33,6 @@ import org.thingsboard.server.common.data.id.IdBased; @@ -34,7 +33,6 @@ import org.thingsboard.server.common.data.id.IdBased;
34 import org.thingsboard.server.common.data.id.TenantId; 33 import org.thingsboard.server.common.data.id.TenantId;
35 import org.thingsboard.server.common.data.page.PageData; 34 import org.thingsboard.server.common.data.page.PageData;
36 import org.thingsboard.server.common.data.page.PageLink; 35 import org.thingsboard.server.common.data.page.PageLink;
37 -import org.thingsboard.server.common.data.page.TimePageLink;  
38 import org.thingsboard.server.common.data.security.Authority; 36 import org.thingsboard.server.common.data.security.Authority;
39 import org.thingsboard.server.common.data.security.UserCredentials; 37 import org.thingsboard.server.common.data.security.UserCredentials;
40 import org.thingsboard.server.dao.customer.CustomerService; 38 import org.thingsboard.server.dao.customer.CustomerService;
@@ -49,7 +47,6 @@ import org.thingsboard.server.service.security.model.UserPrincipal; @@ -49,7 +47,6 @@ import org.thingsboard.server.service.security.model.UserPrincipal;
49 import java.io.IOException; 47 import java.io.IOException;
50 import java.util.List; 48 import java.util.List;
51 import java.util.Optional; 49 import java.util.Optional;
52 -import java.util.concurrent.ExecutionException;  
53 import java.util.concurrent.locks.Lock; 50 import java.util.concurrent.locks.Lock;
54 import java.util.concurrent.locks.ReentrantLock; 51 import java.util.concurrent.locks.ReentrantLock;
55 52
@@ -79,7 +76,7 @@ public abstract class AbstractOAuth2ClientMapper { @@ -79,7 +76,7 @@ public abstract class AbstractOAuth2ClientMapper {
79 76
80 private final Lock userCreationLock = new ReentrantLock(); 77 private final Lock userCreationLock = new ReentrantLock();
81 78
82 - protected SecurityUser getOrCreateSecurityUserFromOAuth2User(TenantId parentTenantId, OAuth2User oauth2User, boolean allowUserCreation, boolean activateUser) { 79 + protected SecurityUser getOrCreateSecurityUserFromOAuth2User(OAuth2User oauth2User, boolean allowUserCreation, boolean activateUser) {
83 UserPrincipal principal = new UserPrincipal(UserPrincipal.Type.USER_NAME, oauth2User.getEmail()); 80 UserPrincipal principal = new UserPrincipal(UserPrincipal.Type.USER_NAME, oauth2User.getEmail());
84 81
85 User user = userService.findUserByEmail(TenantId.SYS_TENANT_ID, oauth2User.getEmail()); 82 User user = userService.findUserByEmail(TenantId.SYS_TENANT_ID, oauth2User.getEmail());
@@ -99,13 +96,8 @@ public abstract class AbstractOAuth2ClientMapper { @@ -99,13 +96,8 @@ public abstract class AbstractOAuth2ClientMapper {
99 } else { 96 } else {
100 user.setAuthority(Authority.CUSTOMER_USER); 97 user.setAuthority(Authority.CUSTOMER_USER);
101 } 98 }
102 - TenantId tenantId;  
103 - if (TenantId.SYS_TENANT_ID.equals(parentTenantId)) {  
104 - tenantId = oauth2User.getTenantId() != null ?  
105 - oauth2User.getTenantId() : getTenantId(oauth2User.getTenantName());  
106 - } else {  
107 - tenantId = parentTenantId;  
108 - } 99 + TenantId tenantId = oauth2User.getTenantId() != null ?
  100 + oauth2User.getTenantId() : getTenantId(oauth2User.getTenantName());
109 user.setTenantId(tenantId); 101 user.setTenantId(tenantId);
110 CustomerId customerId = oauth2User.getCustomerId() != null ? 102 CustomerId customerId = oauth2User.getCustomerId() != null ?
111 oauth2User.getCustomerId() : getCustomerId(user.getTenantId(), oauth2User.getCustomerName()); 103 oauth2User.getCustomerId() : getCustomerId(user.getTenantId(), oauth2User.getCustomerName());
@@ -20,7 +20,6 @@ import org.apache.commons.lang3.text.StrSubstitutor; @@ -20,7 +20,6 @@ import org.apache.commons.lang3.text.StrSubstitutor;
20 import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken; 20 import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
21 import org.springframework.stereotype.Service; 21 import org.springframework.stereotype.Service;
22 import org.springframework.util.StringUtils; 22 import org.springframework.util.StringUtils;
23 -import org.thingsboard.server.common.data.id.TenantId;  
24 import org.thingsboard.server.common.data.oauth2.OAuth2MapperConfig; 23 import org.thingsboard.server.common.data.oauth2.OAuth2MapperConfig;
25 import org.thingsboard.server.dao.oauth2.OAuth2User; 24 import org.thingsboard.server.dao.oauth2.OAuth2User;
26 import org.thingsboard.server.service.security.model.SecurityUser; 25 import org.thingsboard.server.service.security.model.SecurityUser;
@@ -35,7 +34,7 @@ public class BasicOAuth2ClientMapper extends AbstractOAuth2ClientMapper implemen @@ -35,7 +34,7 @@ public class BasicOAuth2ClientMapper extends AbstractOAuth2ClientMapper implemen
35 private static final String END_PLACEHOLDER_PREFIX = "}"; 34 private static final String END_PLACEHOLDER_PREFIX = "}";
36 35
37 @Override 36 @Override
38 - public SecurityUser getOrCreateUserByClientPrincipal(OAuth2AuthenticationToken token, String providerAccessToken, TenantId parentTenantId, OAuth2MapperConfig config) { 37 + public SecurityUser getOrCreateUserByClientPrincipal(OAuth2AuthenticationToken token, String providerAccessToken, OAuth2MapperConfig config) {
39 OAuth2User oauth2User = new OAuth2User(); 38 OAuth2User oauth2User = new OAuth2User();
40 Map<String, Object> attributes = token.getPrincipal().getAttributes(); 39 Map<String, Object> attributes = token.getPrincipal().getAttributes();
41 String email = getStringAttributeByKey(attributes, config.getBasic().getEmailAttributeKey()); 40 String email = getStringAttributeByKey(attributes, config.getBasic().getEmailAttributeKey());
@@ -59,7 +58,7 @@ public class BasicOAuth2ClientMapper extends AbstractOAuth2ClientMapper implemen @@ -59,7 +58,7 @@ public class BasicOAuth2ClientMapper extends AbstractOAuth2ClientMapper implemen
59 oauth2User.setDefaultDashboardName(config.getBasic().getDefaultDashboardName()); 58 oauth2User.setDefaultDashboardName(config.getBasic().getDefaultDashboardName());
60 } 59 }
61 60
62 - return getOrCreateSecurityUserFromOAuth2User(parentTenantId, oauth2User, config.isAllowUserCreation(), config.isActivateUser()); 61 + return getOrCreateSecurityUserFromOAuth2User(oauth2User, config.isAllowUserCreation(), config.isActivateUser());
63 } 62 }
64 63
65 private String getTenantName(Map<String, Object> attributes, OAuth2MapperConfig config) { 64 private String getTenantName(Map<String, Object> attributes, OAuth2MapperConfig config) {
@@ -23,7 +23,6 @@ import org.springframework.security.oauth2.client.authentication.OAuth2Authentic @@ -23,7 +23,6 @@ import org.springframework.security.oauth2.client.authentication.OAuth2Authentic
23 import org.springframework.stereotype.Service; 23 import org.springframework.stereotype.Service;
24 import org.springframework.util.StringUtils; 24 import org.springframework.util.StringUtils;
25 import org.springframework.web.client.RestTemplate; 25 import org.springframework.web.client.RestTemplate;
26 -import org.thingsboard.server.common.data.id.TenantId;  
27 import org.thingsboard.server.common.data.oauth2.OAuth2CustomMapperConfig; 26 import org.thingsboard.server.common.data.oauth2.OAuth2CustomMapperConfig;
28 import org.thingsboard.server.common.data.oauth2.OAuth2MapperConfig; 27 import org.thingsboard.server.common.data.oauth2.OAuth2MapperConfig;
29 import org.thingsboard.server.dao.oauth2.OAuth2User; 28 import org.thingsboard.server.dao.oauth2.OAuth2User;
@@ -39,9 +38,9 @@ public class CustomOAuth2ClientMapper extends AbstractOAuth2ClientMapper impleme @@ -39,9 +38,9 @@ public class CustomOAuth2ClientMapper extends AbstractOAuth2ClientMapper impleme
39 private RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder(); 38 private RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder();
40 39
41 @Override 40 @Override
42 - public SecurityUser getOrCreateUserByClientPrincipal(OAuth2AuthenticationToken token, String providerAccessToken, TenantId parentTenantId, OAuth2MapperConfig config) { 41 + public SecurityUser getOrCreateUserByClientPrincipal(OAuth2AuthenticationToken token, String providerAccessToken, OAuth2MapperConfig config) {
43 OAuth2User oauth2User = getOAuth2User(token, providerAccessToken, config.getCustom()); 42 OAuth2User oauth2User = getOAuth2User(token, providerAccessToken, config.getCustom());
44 - return getOrCreateSecurityUserFromOAuth2User(parentTenantId, oauth2User, config.isAllowUserCreation(), config.isActivateUser()); 43 + return getOrCreateSecurityUserFromOAuth2User(oauth2User, config.isAllowUserCreation(), config.isActivateUser());
45 } 44 }
46 45
47 private synchronized OAuth2User getOAuth2User(OAuth2AuthenticationToken token, String providerAccessToken, OAuth2CustomMapperConfig custom) { 46 private synchronized OAuth2User getOAuth2User(OAuth2AuthenticationToken token, String providerAccessToken, OAuth2CustomMapperConfig custom) {
@@ -16,10 +16,9 @@ @@ -16,10 +16,9 @@
16 package org.thingsboard.server.service.security.auth.oauth2; 16 package org.thingsboard.server.service.security.auth.oauth2;
17 17
18 import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken; 18 import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
19 -import org.thingsboard.server.common.data.id.TenantId;  
20 import org.thingsboard.server.common.data.oauth2.OAuth2MapperConfig; 19 import org.thingsboard.server.common.data.oauth2.OAuth2MapperConfig;
21 import org.thingsboard.server.service.security.model.SecurityUser; 20 import org.thingsboard.server.service.security.model.SecurityUser;
22 21
23 public interface OAuth2ClientMapper { 22 public interface OAuth2ClientMapper {
24 - SecurityUser getOrCreateUserByClientPrincipal(OAuth2AuthenticationToken token, String providerAccessToken, TenantId parentTenantId, OAuth2MapperConfig config); 23 + SecurityUser getOrCreateUserByClientPrincipal(OAuth2AuthenticationToken token, String providerAccessToken, OAuth2MapperConfig config);
25 } 24 }
@@ -74,7 +74,7 @@ public class Oauth2AuthenticationSuccessHandler extends SimpleUrlAuthenticationS @@ -74,7 +74,7 @@ public class Oauth2AuthenticationSuccessHandler extends SimpleUrlAuthenticationS
74 token.getPrincipal().getName()); 74 token.getPrincipal().getName());
75 OAuth2ClientMapper mapper = oauth2ClientMapperProvider.getOAuth2ClientMapperByType(clientRegistration.getMapperConfig().getType()); 75 OAuth2ClientMapper mapper = oauth2ClientMapperProvider.getOAuth2ClientMapperByType(clientRegistration.getMapperConfig().getType());
76 SecurityUser securityUser = mapper.getOrCreateUserByClientPrincipal(token, oAuth2AuthorizedClient.getAccessToken().getTokenValue(), 76 SecurityUser securityUser = mapper.getOrCreateUserByClientPrincipal(token, oAuth2AuthorizedClient.getAccessToken().getTokenValue(),
77 - clientRegistration.getTenantId(), clientRegistration.getMapperConfig()); 77 + clientRegistration.getMapperConfig());
78 78
79 JwtToken accessToken = tokenFactory.createAccessJwtToken(securityUser); 79 JwtToken accessToken = tokenFactory.createAccessJwtToken(securityUser);
80 JwtToken refreshToken = refreshTokenRepository.requestRefreshToken(securityUser); 80 JwtToken refreshToken = refreshTokenRepository.requestRefreshToken(securityUser);
@@ -19,14 +19,10 @@ import org.springframework.stereotype.Component; @@ -19,14 +19,10 @@ import org.springframework.stereotype.Component;
19 import org.thingsboard.server.common.data.HasTenantId; 19 import org.thingsboard.server.common.data.HasTenantId;
20 import org.thingsboard.server.common.data.User; 20 import org.thingsboard.server.common.data.User;
21 import org.thingsboard.server.common.data.id.EntityId; 21 import org.thingsboard.server.common.data.id.EntityId;
22 -import org.thingsboard.server.common.data.id.TenantId;  
23 import org.thingsboard.server.common.data.id.UserId; 22 import org.thingsboard.server.common.data.id.UserId;
24 import org.thingsboard.server.common.data.security.Authority; 23 import org.thingsboard.server.common.data.security.Authority;
25 import org.thingsboard.server.service.security.model.SecurityUser; 24 import org.thingsboard.server.service.security.model.SecurityUser;
26 25
27 -import java.util.HashMap;  
28 -import java.util.Optional;  
29 -  
30 @Component(value="sysAdminPermissions") 26 @Component(value="sysAdminPermissions")
31 public class SysAdminPermissions extends AbstractPermissions { 27 public class SysAdminPermissions extends AbstractPermissions {
32 28
@@ -39,7 +35,7 @@ public class SysAdminPermissions extends AbstractPermissions { @@ -39,7 +35,7 @@ public class SysAdminPermissions extends AbstractPermissions {
39 put(Resource.USER, userPermissionChecker); 35 put(Resource.USER, userPermissionChecker);
40 put(Resource.WIDGETS_BUNDLE, systemEntityPermissionChecker); 36 put(Resource.WIDGETS_BUNDLE, systemEntityPermissionChecker);
41 put(Resource.WIDGET_TYPE, systemEntityPermissionChecker); 37 put(Resource.WIDGET_TYPE, systemEntityPermissionChecker);
42 - put(Resource.OAUTH2_CONFIGURATION, sysAdminOAuth2ConfigPermissionChecker); 38 + put(Resource.OAUTH2_CONFIGURATION, PermissionChecker.allowAllPermissionChecker);
43 put(Resource.OAUTH2_CONFIGURATION_TEMPLATE, PermissionChecker.allowAllPermissionChecker); 39 put(Resource.OAUTH2_CONFIGURATION_TEMPLATE, PermissionChecker.allowAllPermissionChecker);
44 } 40 }
45 41
@@ -67,19 +63,4 @@ public class SysAdminPermissions extends AbstractPermissions { @@ -67,19 +63,4 @@ public class SysAdminPermissions extends AbstractPermissions {
67 63
68 }; 64 };
69 65
70 - private final PermissionChecker sysAdminOAuth2ConfigPermissionChecker = new PermissionChecker() {  
71 - @Override  
72 - public boolean hasPermission(SecurityUser user, Operation operation) {  
73 - return true;  
74 - }  
75 -  
76 - @Override  
77 - public boolean hasPermission(SecurityUser user, Operation operation, EntityId entityId, HasTenantId entity) {  
78 - if (entity.getTenantId() != null && !entity.getTenantId().isNullUid()) {  
79 - return false;  
80 - }  
81 - return true;  
82 - }  
83 - };  
84 -  
85 } 66 }
@@ -15,25 +15,17 @@ @@ -15,25 +15,17 @@
15 */ 15 */
16 package org.thingsboard.server.service.security.permission; 16 package org.thingsboard.server.service.security.permission;
17 17
18 -import org.springframework.beans.factory.annotation.Autowired;  
19 import org.springframework.stereotype.Component; 18 import org.springframework.stereotype.Component;
20 import org.thingsboard.server.common.data.HasTenantId; 19 import org.thingsboard.server.common.data.HasTenantId;
21 import org.thingsboard.server.common.data.User; 20 import org.thingsboard.server.common.data.User;
22 import org.thingsboard.server.common.data.id.EntityId; 21 import org.thingsboard.server.common.data.id.EntityId;
23 -import org.thingsboard.server.common.data.id.TenantId;  
24 import org.thingsboard.server.common.data.id.UserId; 22 import org.thingsboard.server.common.data.id.UserId;
25 import org.thingsboard.server.common.data.security.Authority; 23 import org.thingsboard.server.common.data.security.Authority;
26 -import org.thingsboard.server.dao.oauth2.OAuth2Service;  
27 import org.thingsboard.server.service.security.model.SecurityUser; 24 import org.thingsboard.server.service.security.model.SecurityUser;
28 25
29 -import java.util.HashMap;  
30 -  
31 @Component(value="tenantAdminPermissions") 26 @Component(value="tenantAdminPermissions")
32 public class TenantAdminPermissions extends AbstractPermissions { 27 public class TenantAdminPermissions extends AbstractPermissions {
33 28
34 - @Autowired  
35 - private OAuth2Service oAuth2Service;  
36 -  
37 public TenantAdminPermissions() { 29 public TenantAdminPermissions() {
38 super(); 30 super();
39 put(Resource.ALARM, tenantEntityPermissionChecker); 31 put(Resource.ALARM, tenantEntityPermissionChecker);
@@ -47,8 +39,6 @@ public class TenantAdminPermissions extends AbstractPermissions { @@ -47,8 +39,6 @@ public class TenantAdminPermissions extends AbstractPermissions {
47 put(Resource.USER, userPermissionChecker); 39 put(Resource.USER, userPermissionChecker);
48 put(Resource.WIDGETS_BUNDLE, widgetsPermissionChecker); 40 put(Resource.WIDGETS_BUNDLE, widgetsPermissionChecker);
49 put(Resource.WIDGET_TYPE, widgetsPermissionChecker); 41 put(Resource.WIDGET_TYPE, widgetsPermissionChecker);
50 - put(Resource.OAUTH2_CONFIGURATION, tenantOAuth2ConfigPermissionChecker);  
51 - put(Resource.OAUTH2_CONFIGURATION_TEMPLATE, tenantOAuth2ConfigTemplatePermissionChecker);  
52 } 42 }
53 43
54 public static final PermissionChecker tenantEntityPermissionChecker = new PermissionChecker() { 44 public static final PermissionChecker tenantEntityPermissionChecker = new PermissionChecker() {
@@ -108,31 +98,4 @@ public class TenantAdminPermissions extends AbstractPermissions { @@ -108,31 +98,4 @@ public class TenantAdminPermissions extends AbstractPermissions {
108 } 98 }
109 99
110 }; 100 };
111 -  
112 - private final PermissionChecker tenantOAuth2ConfigPermissionChecker = new PermissionChecker() {  
113 - @Override  
114 - public boolean hasPermission(SecurityUser user, Operation operation) {  
115 - return oAuth2Service.isOAuth2ClientRegistrationAllowed(user.getTenantId());  
116 - }  
117 -  
118 - @Override  
119 - public boolean hasPermission(SecurityUser user, Operation operation, EntityId entityId, HasTenantId entity) {  
120 - if (!user.getTenantId().equals(entity.getTenantId())) {  
121 - return false;  
122 - }  
123 - return hasPermission(user, operation);  
124 - }  
125 - };  
126 -  
127 - private static final PermissionChecker tenantOAuth2ConfigTemplatePermissionChecker = new PermissionChecker() {  
128 - @Override  
129 - public boolean hasPermission(SecurityUser user, Operation operation) {  
130 - return operation == Operation.READ;  
131 - }  
132 -  
133 - @Override  
134 - public boolean hasPermission(SecurityUser user, Operation operation, EntityId entityId, HasTenantId entity) {  
135 - return operation == Operation.READ;  
136 - }  
137 - };  
138 } 101 }
@@ -27,19 +27,15 @@ import java.util.UUID; @@ -27,19 +27,15 @@ import java.util.UUID;
27 public interface OAuth2Service { 27 public interface OAuth2Service {
28 List<OAuth2ClientInfo> getOAuth2Clients(String domainName); 28 List<OAuth2ClientInfo> getOAuth2Clients(String domainName);
29 29
30 - List<OAuth2ClientsDomainParams> saveDomainsParams(TenantId tenantId, List<OAuth2ClientsDomainParams> domainsParams); 30 + List<OAuth2ClientsDomainParams> saveDomainsParams(List<OAuth2ClientsDomainParams> domainsParams);
31 31
32 - List<OAuth2ClientsDomainParams> findDomainsParamsByTenantId(TenantId tenantId); 32 + List<OAuth2ClientsDomainParams> findDomainsParams();
33 33
34 OAuth2ClientRegistration findClientRegistration(UUID id); 34 OAuth2ClientRegistration findClientRegistration(UUID id);
35 35
36 List<OAuth2ClientRegistration> findAllClientRegistrations(); 36 List<OAuth2ClientRegistration> findAllClientRegistrations();
37 37
38 - void deleteClientRegistrationsByTenantId(TenantId tenantId); 38 + void deleteClientRegistrationById(OAuth2ClientRegistrationId id);
39 39
40 - void deleteClientRegistrationById(TenantId tenantId, OAuth2ClientRegistrationId id);  
41 -  
42 - void deleteClientRegistrationsByDomain(TenantId tenantId, String domain);  
43 -  
44 - boolean isOAuth2ClientRegistrationAllowed(TenantId tenantId); 40 + void deleteClientRegistrationsByDomain(String domain);
45 } 41 }
@@ -32,9 +32,8 @@ import java.util.List; @@ -32,9 +32,8 @@ import java.util.List;
32 @Data 32 @Data
33 @ToString(exclude = {"clientSecret"}) 33 @ToString(exclude = {"clientSecret"})
34 @NoArgsConstructor 34 @NoArgsConstructor
35 -public class OAuth2ClientRegistration extends SearchTextBasedWithAdditionalInfo<OAuth2ClientRegistrationId> implements HasTenantId, HasName { 35 +public class OAuth2ClientRegistration extends SearchTextBasedWithAdditionalInfo<OAuth2ClientRegistrationId> implements HasName {
36 36
37 - private TenantId tenantId;  
38 private String domainName; 37 private String domainName;
39 private String redirectUriTemplate; 38 private String redirectUriTemplate;
40 private OAuth2MapperConfig mapperConfig; 39 private OAuth2MapperConfig mapperConfig;
@@ -52,7 +51,6 @@ public class OAuth2ClientRegistration extends SearchTextBasedWithAdditionalInfo< @@ -52,7 +51,6 @@ public class OAuth2ClientRegistration extends SearchTextBasedWithAdditionalInfo<
52 51
53 public OAuth2ClientRegistration(OAuth2ClientRegistration clientRegistration) { 52 public OAuth2ClientRegistration(OAuth2ClientRegistration clientRegistration) {
54 super(clientRegistration); 53 super(clientRegistration);
55 - this.tenantId = clientRegistration.tenantId;  
56 this.domainName = clientRegistration.domainName; 54 this.domainName = clientRegistration.domainName;
57 this.redirectUriTemplate = clientRegistration.redirectUriTemplate; 55 this.redirectUriTemplate = clientRegistration.redirectUriTemplate;
58 this.mapperConfig = clientRegistration.mapperConfig; 56 this.mapperConfig = clientRegistration.mapperConfig;
@@ -31,9 +31,8 @@ import java.util.List; @@ -31,9 +31,8 @@ import java.util.List;
31 @Data 31 @Data
32 @ToString 32 @ToString
33 @NoArgsConstructor 33 @NoArgsConstructor
34 -public class OAuth2ClientRegistrationTemplate extends SearchTextBasedWithAdditionalInfo<OAuth2ClientRegistrationTemplateId> implements HasTenantId, HasName { 34 +public class OAuth2ClientRegistrationTemplate extends SearchTextBasedWithAdditionalInfo<OAuth2ClientRegistrationTemplateId> implements HasName {
35 35
36 - private TenantId tenantId;  
37 private String providerId; 36 private String providerId;
38 private OAuth2BasicMapperConfig basic; 37 private OAuth2BasicMapperConfig basic;
39 private String authorizationUri; 38 private String authorizationUri;
@@ -50,7 +49,6 @@ public class OAuth2ClientRegistrationTemplate extends SearchTextBasedWithAdditio @@ -50,7 +49,6 @@ public class OAuth2ClientRegistrationTemplate extends SearchTextBasedWithAdditio
50 49
51 public OAuth2ClientRegistrationTemplate(OAuth2ClientRegistrationTemplate clientRegistrationTemplate) { 50 public OAuth2ClientRegistrationTemplate(OAuth2ClientRegistrationTemplate clientRegistrationTemplate) {
52 super(clientRegistrationTemplate); 51 super(clientRegistrationTemplate);
53 - this.tenantId = clientRegistrationTemplate.tenantId;  
54 this.providerId = clientRegistrationTemplate.providerId; 52 this.providerId = clientRegistrationTemplate.providerId;
55 this.basic = clientRegistrationTemplate.basic; 53 this.basic = clientRegistrationTemplate.basic;
56 this.authorizationUri = clientRegistrationTemplate.authorizationUri; 54 this.authorizationUri = clientRegistrationTemplate.authorizationUri;
@@ -38,9 +38,6 @@ import java.util.UUID; @@ -38,9 +38,6 @@ import java.util.UUID;
38 @Table(name = ModelConstants.OAUTH2_CLIENT_REGISTRATION_COLUMN_FAMILY_NAME) 38 @Table(name = ModelConstants.OAUTH2_CLIENT_REGISTRATION_COLUMN_FAMILY_NAME)
39 public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRegistration> { 39 public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRegistration> {
40 40
41 - @Column(name = ModelConstants.OAUTH2_TENANT_ID_PROPERTY, columnDefinition = "uuid")  
42 - private UUID tenantId;  
43 -  
44 @Column(name = ModelConstants.OAUTH2_DOMAIN_NAME_PROPERTY) 41 @Column(name = ModelConstants.OAUTH2_DOMAIN_NAME_PROPERTY)
45 private String domainName; 42 private String domainName;
46 @Column(name = ModelConstants.OAUTH2_CLIENT_ID_PROPERTY) 43 @Column(name = ModelConstants.OAUTH2_CLIENT_ID_PROPERTY)
@@ -112,9 +109,6 @@ public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRe @@ -112,9 +109,6 @@ public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRe
112 if (clientRegistration.getId() != null) { 109 if (clientRegistration.getId() != null) {
113 this.setUuid(clientRegistration.getId().getId()); 110 this.setUuid(clientRegistration.getId().getId());
114 } 111 }
115 - if (clientRegistration.getTenantId() != null) {  
116 - this.tenantId = clientRegistration.getTenantId().getId();  
117 - }  
118 this.domainName = clientRegistration.getDomainName(); 112 this.domainName = clientRegistration.getDomainName();
119 this.createdTime = clientRegistration.getCreatedTime(); 113 this.createdTime = clientRegistration.getCreatedTime();
120 this.clientId = clientRegistration.getClientId(); 114 this.clientId = clientRegistration.getClientId();
@@ -160,7 +154,6 @@ public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRe @@ -160,7 +154,6 @@ public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRe
160 public OAuth2ClientRegistration toData() { 154 public OAuth2ClientRegistration toData() {
161 OAuth2ClientRegistration clientRegistration = new OAuth2ClientRegistration(); 155 OAuth2ClientRegistration clientRegistration = new OAuth2ClientRegistration();
162 clientRegistration.setId(new OAuth2ClientRegistrationId(id)); 156 clientRegistration.setId(new OAuth2ClientRegistrationId(id));
163 - clientRegistration.setTenantId(new TenantId(tenantId));  
164 clientRegistration.setCreatedTime(createdTime); 157 clientRegistration.setCreatedTime(createdTime);
165 clientRegistration.setDomainName(domainName); 158 clientRegistration.setDomainName(domainName);
166 clientRegistration.setAdditionalInfo(additionalInfo); 159 clientRegistration.setAdditionalInfo(additionalInfo);
@@ -39,9 +39,6 @@ import java.util.UUID; @@ -39,9 +39,6 @@ import java.util.UUID;
39 @Table(name = ModelConstants.OAUTH2_CLIENT_REGISTRATION_TEMPLATE_COLUMN_FAMILY_NAME) 39 @Table(name = ModelConstants.OAUTH2_CLIENT_REGISTRATION_TEMPLATE_COLUMN_FAMILY_NAME)
40 public class OAuth2ClientRegistrationTemplateEntity extends BaseSqlEntity<OAuth2ClientRegistrationTemplate> { 40 public class OAuth2ClientRegistrationTemplateEntity extends BaseSqlEntity<OAuth2ClientRegistrationTemplate> {
41 41
42 - @Column(name = ModelConstants.OAUTH2_TENANT_ID_PROPERTY, columnDefinition = "uuid")  
43 - private UUID tenantId;  
44 -  
45 @Column(name = ModelConstants.OAUTH2_TEMPLATE_PROVIDER_ID_PROPERTY) 42 @Column(name = ModelConstants.OAUTH2_TEMPLATE_PROVIDER_ID_PROPERTY)
46 private String providerId; 43 private String providerId;
47 @Column(name = ModelConstants.OAUTH2_AUTHORIZATION_URI_PROPERTY) 44 @Column(name = ModelConstants.OAUTH2_AUTHORIZATION_URI_PROPERTY)
@@ -95,9 +92,6 @@ public class OAuth2ClientRegistrationTemplateEntity extends BaseSqlEntity<OAuth2 @@ -95,9 +92,6 @@ public class OAuth2ClientRegistrationTemplateEntity extends BaseSqlEntity<OAuth2
95 if (clientRegistrationTemplate.getId() != null) { 92 if (clientRegistrationTemplate.getId() != null) {
96 this.setUuid(clientRegistrationTemplate.getId().getId()); 93 this.setUuid(clientRegistrationTemplate.getId().getId());
97 } 94 }
98 - if (clientRegistrationTemplate.getTenantId() != null) {  
99 - this.tenantId = clientRegistrationTemplate.getTenantId().getId();  
100 - }  
101 this.createdTime = clientRegistrationTemplate.getCreatedTime(); 95 this.createdTime = clientRegistrationTemplate.getCreatedTime();
102 this.providerId = clientRegistrationTemplate.getProviderId(); 96 this.providerId = clientRegistrationTemplate.getProviderId();
103 this.authorizationUri = clientRegistrationTemplate.getAuthorizationUri(); 97 this.authorizationUri = clientRegistrationTemplate.getAuthorizationUri();
@@ -129,7 +123,6 @@ public class OAuth2ClientRegistrationTemplateEntity extends BaseSqlEntity<OAuth2 @@ -129,7 +123,6 @@ public class OAuth2ClientRegistrationTemplateEntity extends BaseSqlEntity<OAuth2
129 public OAuth2ClientRegistrationTemplate toData() { 123 public OAuth2ClientRegistrationTemplate toData() {
130 OAuth2ClientRegistrationTemplate clientRegistrationTemplate = new OAuth2ClientRegistrationTemplate(); 124 OAuth2ClientRegistrationTemplate clientRegistrationTemplate = new OAuth2ClientRegistrationTemplate();
131 clientRegistrationTemplate.setId(new OAuth2ClientRegistrationTemplateId(id)); 125 clientRegistrationTemplate.setId(new OAuth2ClientRegistrationTemplateId(id));
132 - clientRegistrationTemplate.setTenantId(new TenantId(tenantId));  
133 clientRegistrationTemplate.setCreatedTime(createdTime); 126 clientRegistrationTemplate.setCreatedTime(createdTime);
134 clientRegistrationTemplate.setAdditionalInfo(additionalInfo); 127 clientRegistrationTemplate.setAdditionalInfo(additionalInfo);
135 128
@@ -24,11 +24,7 @@ import java.util.UUID; @@ -24,11 +24,7 @@ import java.util.UUID;
24 public interface OAuth2ClientRegistrationDao extends Dao<OAuth2ClientRegistration> { 24 public interface OAuth2ClientRegistrationDao extends Dao<OAuth2ClientRegistration> {
25 List<OAuth2ClientRegistration> findAll(); 25 List<OAuth2ClientRegistration> findAll();
26 26
27 - List<OAuth2ClientRegistration> findByTenantId(UUID tenantId);  
28 -  
29 List<OAuth2ClientRegistration> findByDomainName(String domainName); 27 List<OAuth2ClientRegistration> findByDomainName(String domainName);
30 28
31 - int removeByTenantIdAndDomainName(UUID tenantId, String domainName);  
32 -  
33 - int removeByTenantId(UUID tenantId); 29 + int removeByDomainName(String domainName);
34 } 30 }
@@ -44,10 +44,10 @@ public class OAuth2ConfigTemplateServiceImpl extends AbstractEntityService imple @@ -44,10 +44,10 @@ public class OAuth2ConfigTemplateServiceImpl extends AbstractEntityService imple
44 @Override 44 @Override
45 public OAuth2ClientRegistrationTemplate saveClientRegistrationTemplate(OAuth2ClientRegistrationTemplate clientRegistrationTemplate) { 45 public OAuth2ClientRegistrationTemplate saveClientRegistrationTemplate(OAuth2ClientRegistrationTemplate clientRegistrationTemplate) {
46 log.trace("Executing saveClientRegistrationTemplate [{}]", clientRegistrationTemplate); 46 log.trace("Executing saveClientRegistrationTemplate [{}]", clientRegistrationTemplate);
47 - clientRegistrationTemplateValidator.validate(clientRegistrationTemplate, OAuth2ClientRegistrationTemplate::getTenantId); 47 + clientRegistrationTemplateValidator.validate(clientRegistrationTemplate, o -> TenantId.SYS_TENANT_ID);
48 OAuth2ClientRegistrationTemplate savedClientRegistrationTemplate; 48 OAuth2ClientRegistrationTemplate savedClientRegistrationTemplate;
49 try { 49 try {
50 - savedClientRegistrationTemplate = clientRegistrationTemplateDao.save(clientRegistrationTemplate.getTenantId(), clientRegistrationTemplate); 50 + savedClientRegistrationTemplate = clientRegistrationTemplateDao.save(TenantId.SYS_TENANT_ID, clientRegistrationTemplate);
51 } catch (Exception t) { 51 } catch (Exception t) {
52 ConstraintViolationException e = extractConstraintViolationException(t).orElse(null); 52 ConstraintViolationException e = extractConstraintViolationException(t).orElse(null);
53 if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("oauth2_template_provider_id_unq_key")) { 53 if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("oauth2_template_provider_id_unq_key")) {
@@ -98,10 +98,6 @@ public class OAuth2ConfigTemplateServiceImpl extends AbstractEntityService imple @@ -98,10 +98,6 @@ public class OAuth2ConfigTemplateServiceImpl extends AbstractEntityService imple
98 if (clientRegistrationTemplate.getBasic() == null) { 98 if (clientRegistrationTemplate.getBasic() == null) {
99 throw new DataValidationException("Basic mapper config should be specified!"); 99 throw new DataValidationException("Basic mapper config should be specified!");
100 } 100 }
101 - if (clientRegistrationTemplate.getTenantId() == null  
102 - || !TenantId.SYS_TENANT_ID.equals(clientRegistrationTemplate.getTenantId())) {  
103 - throw new DataValidationException("Client registration template should be assigned to system admin!");  
104 - }  
105 } 101 }
106 }; 102 };
107 } 103 }
@@ -15,30 +15,22 @@ @@ -15,30 +15,22 @@
15 */ 15 */
16 package org.thingsboard.server.dao.oauth2; 16 package org.thingsboard.server.dao.oauth2;
17 17
18 -import com.fasterxml.jackson.databind.JsonNode;  
19 import lombok.extern.slf4j.Slf4j; 18 import lombok.extern.slf4j.Slf4j;
20 -import org.hibernate.exception.ConstraintViolationException;  
21 import org.springframework.beans.factory.annotation.Autowired; 19 import org.springframework.beans.factory.annotation.Autowired;
22 import org.springframework.stereotype.Service; 20 import org.springframework.stereotype.Service;
23 import org.springframework.util.StringUtils; 21 import org.springframework.util.StringUtils;
24 -import org.thingsboard.server.common.data.Tenant;  
25 -import org.thingsboard.server.common.data.exception.ThingsboardErrorCode;  
26 -import org.thingsboard.server.common.data.exception.ThingsboardException;  
27 import org.thingsboard.server.common.data.id.OAuth2ClientRegistrationId; 22 import org.thingsboard.server.common.data.id.OAuth2ClientRegistrationId;
28 import org.thingsboard.server.common.data.id.TenantId; 23 import org.thingsboard.server.common.data.id.TenantId;
29 import org.thingsboard.server.common.data.oauth2.*; 24 import org.thingsboard.server.common.data.oauth2.*;
30 import org.thingsboard.server.dao.entity.AbstractEntityService; 25 import org.thingsboard.server.dao.entity.AbstractEntityService;
31 import org.thingsboard.server.dao.exception.DataValidationException; 26 import org.thingsboard.server.dao.exception.DataValidationException;
32 -import org.thingsboard.server.dao.service.DataValidator;  
33 import org.thingsboard.server.dao.tenant.TenantService; 27 import org.thingsboard.server.dao.tenant.TenantService;
34 28
35 import javax.transaction.Transactional; 29 import javax.transaction.Transactional;
36 import java.util.*; 30 import java.util.*;
37 -import java.util.function.BiConsumer;  
38 import java.util.function.Consumer; 31 import java.util.function.Consumer;
39 import java.util.stream.Collectors; 32 import java.util.stream.Collectors;
40 33
41 -import static org.thingsboard.server.dao.oauth2.OAuth2Utils.ALLOW_OAUTH2_CONFIGURATION;  
42 import static org.thingsboard.server.dao.service.Validator.validateId; 34 import static org.thingsboard.server.dao.service.Validator.validateId;
43 import static org.thingsboard.server.dao.service.Validator.validateString; 35 import static org.thingsboard.server.dao.service.Validator.validateString;
44 36
@@ -50,9 +42,6 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se @@ -50,9 +42,6 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
50 public static final String INCORRECT_DOMAIN_NAME = "Incorrect domainName "; 42 public static final String INCORRECT_DOMAIN_NAME = "Incorrect domainName ";
51 43
52 @Autowired 44 @Autowired
53 - private TenantService tenantService;  
54 -  
55 - @Autowired  
56 private OAuth2ClientRegistrationDao clientRegistrationDao; 45 private OAuth2ClientRegistrationDao clientRegistrationDao;
57 46
58 @Override 47 @Override
@@ -66,21 +55,20 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se @@ -66,21 +55,20 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
66 55
67 @Override 56 @Override
68 @Transactional 57 @Transactional
69 - public List<OAuth2ClientsDomainParams> saveDomainsParams(TenantId tenantId, List<OAuth2ClientsDomainParams> domainsParams) {  
70 - log.trace("Executing saveDomainsParams [{}] [{}]", tenantId, domainsParams);  
71 - clientParamsValidator.accept(tenantId, domainsParams);  
72 - List<OAuth2ClientRegistration> inputClientRegistrations = OAuth2Utils.toClientRegistrations(tenantId, domainsParams); 58 + public List<OAuth2ClientsDomainParams> saveDomainsParams(List<OAuth2ClientsDomainParams> domainsParams) {
  59 + log.trace("Executing saveDomainsParams [{}]", domainsParams);
  60 + clientParamsValidator.accept(domainsParams);
  61 + List<OAuth2ClientRegistration> inputClientRegistrations = OAuth2Utils.toClientRegistrations(domainsParams);
73 List<OAuth2ClientRegistration> savedClientRegistrations = inputClientRegistrations.stream() 62 List<OAuth2ClientRegistration> savedClientRegistrations = inputClientRegistrations.stream()
74 - .map(clientRegistration -> clientRegistrationDao.save(clientRegistration.getTenantId(), clientRegistration)) 63 + .map(clientRegistration -> clientRegistrationDao.save(TenantId.SYS_TENANT_ID, clientRegistration))
75 .collect(Collectors.toList()); 64 .collect(Collectors.toList());
76 return OAuth2Utils.toDomainsParams(savedClientRegistrations); 65 return OAuth2Utils.toDomainsParams(savedClientRegistrations);
77 } 66 }
78 67
79 @Override 68 @Override
80 - public List<OAuth2ClientsDomainParams> findDomainsParamsByTenantId(TenantId tenantId) {  
81 - log.trace("Executing findDomainsParamsByTenantId [{}]", tenantId);  
82 - validateId(tenantId, INCORRECT_TENANT_ID + tenantId);  
83 - return OAuth2Utils.toDomainsParams(clientRegistrationDao.findByTenantId(tenantId.getId())); 69 + public List<OAuth2ClientsDomainParams> findDomainsParams() {
  70 + log.trace("Executing findDomainsParams");
  71 + return OAuth2Utils.toDomainsParams(clientRegistrationDao.findAll());
84 } 72 }
85 73
86 @Override 74 @Override
@@ -97,45 +85,21 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se @@ -97,45 +85,21 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
97 } 85 }
98 86
99 @Override 87 @Override
100 - @Transactional  
101 - public void deleteClientRegistrationsByTenantId(TenantId tenantId) {  
102 - log.trace("Executing deleteClientRegistrationsByTenantId [{}]", tenantId);  
103 - validateId(tenantId, INCORRECT_TENANT_ID + tenantId);  
104 - clientRegistrationDao.removeByTenantId(tenantId.getId());  
105 - }  
106 -  
107 - @Override  
108 - public void deleteClientRegistrationById(TenantId tenantId, OAuth2ClientRegistrationId id) {  
109 - log.trace("Executing deleteClientRegistrationById [{}], [{}]", tenantId, id);  
110 - validateId(tenantId, INCORRECT_TENANT_ID + tenantId); 88 + public void deleteClientRegistrationById(OAuth2ClientRegistrationId id) {
  89 + log.trace("Executing deleteClientRegistrationById [{}]", id);
111 validateId(id, INCORRECT_CLIENT_REGISTRATION_ID + id); 90 validateId(id, INCORRECT_CLIENT_REGISTRATION_ID + id);
112 - clientRegistrationDao.removeById(tenantId, id.getId()); 91 + clientRegistrationDao.removeById(TenantId.SYS_TENANT_ID, id.getId());
113 } 92 }
114 93
115 @Override 94 @Override
116 @Transactional 95 @Transactional
117 - public void deleteClientRegistrationsByDomain(TenantId tenantId, String domain) {  
118 - log.trace("Executing deleteClientRegistrationsByDomain [{}], [{}]", tenantId, domain);  
119 - validateId(tenantId, INCORRECT_TENANT_ID + tenantId); 96 + public void deleteClientRegistrationsByDomain(String domain) {
  97 + log.trace("Executing deleteClientRegistrationsByDomain [{}]", domain);
120 validateString(domain, INCORRECT_DOMAIN_NAME + domain); 98 validateString(domain, INCORRECT_DOMAIN_NAME + domain);
121 - clientRegistrationDao.removeByTenantIdAndDomainName(tenantId.getId(), domain); 99 + clientRegistrationDao.removeByDomainName(domain);
122 } 100 }
123 101
124 - @Override  
125 - public boolean isOAuth2ClientRegistrationAllowed(TenantId tenantId) {  
126 - log.trace("Executing isOAuth2ClientRegistrationAllowed [{}]", tenantId);  
127 - validateId(tenantId, INCORRECT_TENANT_ID + tenantId);  
128 - Tenant tenant = tenantService.findTenantById(tenantId);  
129 - if (tenant == null) return false;  
130 - JsonNode allowOAuth2ConfigurationJsonNode = tenant.getAdditionalInfo() != null ? tenant.getAdditionalInfo().get(ALLOW_OAUTH2_CONFIGURATION) : null;  
131 - if (allowOAuth2ConfigurationJsonNode == null) {  
132 - return false;  
133 - } else {  
134 - return allowOAuth2ConfigurationJsonNode.asBoolean();  
135 - }  
136 - }  
137 -  
138 - private final BiConsumer<TenantId, List<OAuth2ClientsDomainParams>> clientParamsValidator = (tenantId, domainsParams) -> { 102 + private final Consumer<List<OAuth2ClientsDomainParams>> clientParamsValidator = domainsParams -> {
139 if (domainsParams == null || domainsParams.isEmpty()) { 103 if (domainsParams == null || domainsParams.isEmpty()) {
140 throw new DataValidationException("Domain params should be specified!"); 104 throw new DataValidationException("Domain params should be specified!");
141 } 105 }
@@ -211,13 +175,5 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se @@ -211,13 +175,5 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
211 } 175 }
212 } 176 }
213 } 177 }
214 - if (tenantId == null) {  
215 - throw new DataValidationException("Client registration should be assigned to tenant!");  
216 - } else if (!TenantId.SYS_TENANT_ID.equals(tenantId)) {  
217 - Tenant tenant = tenantService.findTenantById(tenantId);  
218 - if (tenant == null) {  
219 - throw new DataValidationException("Client registration is referencing to non-existent tenant!");  
220 - }  
221 - }  
222 }; 178 };
223 } 179 }
@@ -15,8 +15,6 @@ @@ -15,8 +15,6 @@
15 */ 15 */
16 package org.thingsboard.server.dao.oauth2; 16 package org.thingsboard.server.dao.oauth2;
17 17
18 -import org.springframework.util.StringUtils;  
19 -import org.thingsboard.server.common.data.id.TenantId;  
20 import org.thingsboard.server.common.data.oauth2.*; 18 import org.thingsboard.server.common.data.oauth2.*;
21 19
22 import java.util.ArrayList; 20 import java.util.ArrayList;
@@ -24,7 +22,6 @@ import java.util.HashMap; @@ -24,7 +22,6 @@ import java.util.HashMap;
24 import java.util.List; 22 import java.util.List;
25 import java.util.Map; 23 import java.util.Map;
26 import java.util.stream.Collectors; 24 import java.util.stream.Collectors;
27 -import java.util.stream.Stream;  
28 25
29 public class OAuth2Utils { 26 public class OAuth2Utils {
30 public static final String ALLOW_OAUTH2_CONFIGURATION = "allowOAuth2Configuration"; 27 public static final String ALLOW_OAUTH2_CONFIGURATION = "allowOAuth2Configuration";
@@ -38,10 +35,10 @@ public class OAuth2Utils { @@ -38,10 +35,10 @@ public class OAuth2Utils {
38 return client; 35 return client;
39 } 36 }
40 37
41 - public static List<OAuth2ClientRegistration> toClientRegistrations(TenantId tenantId, List<OAuth2ClientsDomainParams> domainsParams) { 38 + public static List<OAuth2ClientRegistration> toClientRegistrations(List<OAuth2ClientsDomainParams> domainsParams) {
42 return domainsParams.stream() 39 return domainsParams.stream()
43 .flatMap(domainParams -> domainParams.getClientRegistrations().stream() 40 .flatMap(domainParams -> domainParams.getClientRegistrations().stream()
44 - .map(clientRegistrationDto -> OAuth2Utils.toClientRegistration(tenantId, domainParams.getDomainName(), 41 + .map(clientRegistrationDto -> OAuth2Utils.toClientRegistration(domainParams.getDomainName(),
45 domainParams.getRedirectUriTemplate(), clientRegistrationDto) 42 domainParams.getRedirectUriTemplate(), clientRegistrationDto)
46 )) 43 ))
47 .collect(Collectors.toList()); 44 .collect(Collectors.toList());
@@ -80,11 +77,10 @@ public class OAuth2Utils { @@ -80,11 +77,10 @@ public class OAuth2Utils {
80 .build(); 77 .build();
81 } 78 }
82 79
83 - public static OAuth2ClientRegistration toClientRegistration(TenantId tenantId, String domainName, String redirectUriTemplate,  
84 - ClientRegistrationDto clientRegistrationDto) { 80 + public static OAuth2ClientRegistration toClientRegistration(String domainName, String redirectUriTemplate,
  81 + ClientRegistrationDto clientRegistrationDto) {
85 OAuth2ClientRegistration clientRegistration = new OAuth2ClientRegistration(); 82 OAuth2ClientRegistration clientRegistration = new OAuth2ClientRegistration();
86 clientRegistration.setId(clientRegistrationDto.getId()); 83 clientRegistration.setId(clientRegistrationDto.getId());
87 - clientRegistration.setTenantId(tenantId);  
88 clientRegistration.setCreatedTime(clientRegistrationDto.getCreatedTime()); 84 clientRegistration.setCreatedTime(clientRegistrationDto.getCreatedTime());
89 clientRegistration.setDomainName(domainName); 85 clientRegistration.setDomainName(domainName);
90 clientRegistration.setRedirectUriTemplate(redirectUriTemplate); 86 clientRegistration.setRedirectUriTemplate(redirectUriTemplate);
@@ -26,7 +26,6 @@ import org.thingsboard.server.dao.sql.JpaAbstractDao; @@ -26,7 +26,6 @@ import org.thingsboard.server.dao.sql.JpaAbstractDao;
26 26
27 import java.util.ArrayList; 27 import java.util.ArrayList;
28 import java.util.List; 28 import java.util.List;
29 -import java.util.Optional;  
30 import java.util.UUID; 29 import java.util.UUID;
31 import java.util.stream.Collectors; 30 import java.util.stream.Collectors;
32 31
@@ -56,24 +55,13 @@ public class JpaOAuth2ClientRegistrationDao extends JpaAbstractDao<OAuth2ClientR @@ -56,24 +55,13 @@ public class JpaOAuth2ClientRegistrationDao extends JpaAbstractDao<OAuth2ClientR
56 } 55 }
57 56
58 @Override 57 @Override
59 - public List<OAuth2ClientRegistration> findByTenantId(UUID tenantId) {  
60 - List<OAuth2ClientRegistrationEntity> entities = repository.findAllByTenantId(tenantId);  
61 - return entities.stream().map(DaoUtil::getData).collect(Collectors.toList());  
62 - }  
63 -  
64 - @Override  
65 public List<OAuth2ClientRegistration> findByDomainName(String domainName) { 58 public List<OAuth2ClientRegistration> findByDomainName(String domainName) {
66 List<OAuth2ClientRegistrationEntity> entities = repository.findAllByDomainName(domainName); 59 List<OAuth2ClientRegistrationEntity> entities = repository.findAllByDomainName(domainName);
67 return entities.stream().map(DaoUtil::getData).collect(Collectors.toList()); 60 return entities.stream().map(DaoUtil::getData).collect(Collectors.toList());
68 } 61 }
69 62
70 @Override 63 @Override
71 - public int removeByTenantIdAndDomainName(UUID tenantId, String domainName) {  
72 - return repository.deleteByTenantIdAndDomainName(tenantId, domainName);  
73 - }  
74 -  
75 - @Override  
76 - public int removeByTenantId(UUID tenantId) {  
77 - return repository.deleteByTenantId(tenantId); 64 + public int removeByDomainName(String domainName) {
  65 + return repository.deleteByDomainName(domainName);
78 } 66 }
79 } 67 }
@@ -22,11 +22,7 @@ import java.util.List; @@ -22,11 +22,7 @@ import java.util.List;
22 import java.util.UUID; 22 import java.util.UUID;
23 23
24 public interface OAuth2ClientRegistrationRepository extends CrudRepository<OAuth2ClientRegistrationEntity, UUID> { 24 public interface OAuth2ClientRegistrationRepository extends CrudRepository<OAuth2ClientRegistrationEntity, UUID> {
25 - List<OAuth2ClientRegistrationEntity> findAllByTenantId(UUID tenantId);  
26 -  
27 List<OAuth2ClientRegistrationEntity> findAllByDomainName(String domainName); 25 List<OAuth2ClientRegistrationEntity> findAllByDomainName(String domainName);
28 26
29 - int deleteByTenantIdAndDomainName(UUID tenantId, String domainName);  
30 -  
31 - int deleteByTenantId(UUID tenantId); 27 + int deleteByDomainName(String domainName);
32 } 28 }
@@ -105,7 +105,6 @@ public class TenantServiceImpl extends AbstractEntityService implements TenantSe @@ -105,7 +105,6 @@ public class TenantServiceImpl extends AbstractEntityService implements TenantSe
105 public void deleteTenant(TenantId tenantId) { 105 public void deleteTenant(TenantId tenantId) {
106 log.trace("Executing deleteTenant [{}]", tenantId); 106 log.trace("Executing deleteTenant [{}]", tenantId);
107 Validator.validateId(tenantId, INCORRECT_TENANT_ID + tenantId); 107 Validator.validateId(tenantId, INCORRECT_TENANT_ID + tenantId);
108 - oAuth2Service.deleteClientRegistrationsByTenantId(tenantId);  
109 customerService.deleteCustomersByTenantId(tenantId); 108 customerService.deleteCustomersByTenantId(tenantId);
110 widgetsBundleService.deleteWidgetsBundlesByTenantId(tenantId); 109 widgetsBundleService.deleteWidgetsBundlesByTenantId(tenantId);
111 dashboardService.deleteDashboardsByTenantId(tenantId); 110 dashboardService.deleteDashboardsByTenantId(tenantId);
@@ -295,7 +295,6 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration ( @@ -295,7 +295,6 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration (
295 id uuid NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY, 295 id uuid NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY,
296 created_time bigint NOT NULL, 296 created_time bigint NOT NULL,
297 additional_info varchar, 297 additional_info varchar,
298 - tenant_id uuid,  
299 domain_name varchar(255), 298 domain_name varchar(255),
300 client_id varchar(255), 299 client_id varchar(255),
301 client_secret varchar(255), 300 client_secret varchar(255),
@@ -330,7 +329,6 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration_template ( @@ -330,7 +329,6 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration_template (
330 id uuid NOT NULL CONSTRAINT oauth2_client_registration_template_pkey PRIMARY KEY, 329 id uuid NOT NULL CONSTRAINT oauth2_client_registration_template_pkey PRIMARY KEY,
331 created_time bigint NOT NULL, 330 created_time bigint NOT NULL,
332 additional_info varchar, 331 additional_info varchar,
333 - tenant_id uuid,  
334 provider_id varchar(255), 332 provider_id varchar(255),
335 authorization_uri varchar(255), 333 authorization_uri varchar(255),
336 token_uri varchar(255), 334 token_uri varchar(255),
@@ -320,7 +320,6 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration ( @@ -320,7 +320,6 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration (
320 id uuid NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY, 320 id uuid NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY,
321 created_time bigint NOT NULL, 321 created_time bigint NOT NULL,
322 additional_info varchar, 322 additional_info varchar,
323 - tenant_id uuid,  
324 domain_name varchar(255), 323 domain_name varchar(255),
325 client_id varchar(255), 324 client_id varchar(255),
326 client_secret varchar(255), 325 client_secret varchar(255),
@@ -355,7 +354,6 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration_template ( @@ -355,7 +354,6 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration_template (
355 id uuid NOT NULL CONSTRAINT oauth2_client_registration_template_pkey PRIMARY KEY, 354 id uuid NOT NULL CONSTRAINT oauth2_client_registration_template_pkey PRIMARY KEY,
356 created_time bigint NOT NULL, 355 created_time bigint NOT NULL,
357 additional_info varchar, 356 additional_info varchar,
358 - tenant_id uuid,  
359 provider_id varchar(255), 357 provider_id varchar(255),
360 authorization_uri varchar(255), 358 authorization_uri varchar(255),
361 token_uri varchar(255), 359 token_uri varchar(255),
@@ -34,8 +34,6 @@ public class BaseOAuth2ConfigTemplateServiceTest extends AbstractServiceTest { @@ -34,8 +34,6 @@ public class BaseOAuth2ConfigTemplateServiceTest extends AbstractServiceTest {
34 @Autowired 34 @Autowired
35 protected OAuth2ConfigTemplateService oAuth2ConfigTemplateService; 35 protected OAuth2ConfigTemplateService oAuth2ConfigTemplateService;
36 36
37 - private TenantId tenantId;  
38 -  
39 @Before 37 @Before
40 public void beforeRun() throws Exception { 38 public void beforeRun() throws Exception {
41 Assert.assertTrue(oAuth2ConfigTemplateService.findAllClientRegistrationTemplates().isEmpty()); 39 Assert.assertTrue(oAuth2ConfigTemplateService.findAllClientRegistrationTemplates().isEmpty());
@@ -53,15 +51,15 @@ public class BaseOAuth2ConfigTemplateServiceTest extends AbstractServiceTest { @@ -53,15 +51,15 @@ public class BaseOAuth2ConfigTemplateServiceTest extends AbstractServiceTest {
53 51
54 @Test(expected = DataValidationException.class) 52 @Test(expected = DataValidationException.class)
55 public void testSaveDuplicateProviderId() { 53 public void testSaveDuplicateProviderId() {
56 - OAuth2ClientRegistrationTemplate first = validClientRegistrationTemplate(TenantId.SYS_TENANT_ID, "providerId");  
57 - OAuth2ClientRegistrationTemplate second = validClientRegistrationTemplate(TenantId.SYS_TENANT_ID, "providerId"); 54 + OAuth2ClientRegistrationTemplate first = validClientRegistrationTemplate("providerId");
  55 + OAuth2ClientRegistrationTemplate second = validClientRegistrationTemplate("providerId");
58 oAuth2ConfigTemplateService.saveClientRegistrationTemplate(first); 56 oAuth2ConfigTemplateService.saveClientRegistrationTemplate(first);
59 oAuth2ConfigTemplateService.saveClientRegistrationTemplate(second); 57 oAuth2ConfigTemplateService.saveClientRegistrationTemplate(second);
60 } 58 }
61 59
62 @Test 60 @Test
63 public void testCreateNewTemplate() { 61 public void testCreateNewTemplate() {
64 - OAuth2ClientRegistrationTemplate clientRegistrationTemplate = validClientRegistrationTemplate(TenantId.SYS_TENANT_ID, UUID.randomUUID().toString()); 62 + OAuth2ClientRegistrationTemplate clientRegistrationTemplate = validClientRegistrationTemplate(UUID.randomUUID().toString());
65 OAuth2ClientRegistrationTemplate savedClientRegistrationTemplate = oAuth2ConfigTemplateService.saveClientRegistrationTemplate(clientRegistrationTemplate); 63 OAuth2ClientRegistrationTemplate savedClientRegistrationTemplate = oAuth2ConfigTemplateService.saveClientRegistrationTemplate(clientRegistrationTemplate);
66 64
67 Assert.assertNotNull(savedClientRegistrationTemplate); 65 Assert.assertNotNull(savedClientRegistrationTemplate);
@@ -73,7 +71,7 @@ public class BaseOAuth2ConfigTemplateServiceTest extends AbstractServiceTest { @@ -73,7 +71,7 @@ public class BaseOAuth2ConfigTemplateServiceTest extends AbstractServiceTest {
73 71
74 @Test 72 @Test
75 public void testFindTemplate() { 73 public void testFindTemplate() {
76 - OAuth2ClientRegistrationTemplate clientRegistrationTemplate = validClientRegistrationTemplate(TenantId.SYS_TENANT_ID, UUID.randomUUID().toString()); 74 + OAuth2ClientRegistrationTemplate clientRegistrationTemplate = validClientRegistrationTemplate(UUID.randomUUID().toString());
77 OAuth2ClientRegistrationTemplate savedClientRegistrationTemplate = oAuth2ConfigTemplateService.saveClientRegistrationTemplate(clientRegistrationTemplate); 75 OAuth2ClientRegistrationTemplate savedClientRegistrationTemplate = oAuth2ConfigTemplateService.saveClientRegistrationTemplate(clientRegistrationTemplate);
78 76
79 OAuth2ClientRegistrationTemplate foundClientRegistrationTemplate = oAuth2ConfigTemplateService.findClientRegistrationTemplateById(savedClientRegistrationTemplate.getId()); 77 OAuth2ClientRegistrationTemplate foundClientRegistrationTemplate = oAuth2ConfigTemplateService.findClientRegistrationTemplateById(savedClientRegistrationTemplate.getId());
@@ -82,17 +80,17 @@ public class BaseOAuth2ConfigTemplateServiceTest extends AbstractServiceTest { @@ -82,17 +80,17 @@ public class BaseOAuth2ConfigTemplateServiceTest extends AbstractServiceTest {
82 80
83 @Test 81 @Test
84 public void testFindAll() { 82 public void testFindAll() {
85 - oAuth2ConfigTemplateService.saveClientRegistrationTemplate(validClientRegistrationTemplate(TenantId.SYS_TENANT_ID, UUID.randomUUID().toString()));  
86 - oAuth2ConfigTemplateService.saveClientRegistrationTemplate(validClientRegistrationTemplate(TenantId.SYS_TENANT_ID, UUID.randomUUID().toString())); 83 + oAuth2ConfigTemplateService.saveClientRegistrationTemplate(validClientRegistrationTemplate(UUID.randomUUID().toString()));
  84 + oAuth2ConfigTemplateService.saveClientRegistrationTemplate(validClientRegistrationTemplate(UUID.randomUUID().toString()));
87 85
88 Assert.assertEquals(2, oAuth2ConfigTemplateService.findAllClientRegistrationTemplates().size()); 86 Assert.assertEquals(2, oAuth2ConfigTemplateService.findAllClientRegistrationTemplates().size());
89 } 87 }
90 88
91 @Test 89 @Test
92 public void testDeleteTemplate() { 90 public void testDeleteTemplate() {
93 - oAuth2ConfigTemplateService.saveClientRegistrationTemplate(validClientRegistrationTemplate(TenantId.SYS_TENANT_ID, UUID.randomUUID().toString()));  
94 - oAuth2ConfigTemplateService.saveClientRegistrationTemplate(validClientRegistrationTemplate(TenantId.SYS_TENANT_ID, UUID.randomUUID().toString()));  
95 - OAuth2ClientRegistrationTemplate saved = oAuth2ConfigTemplateService.saveClientRegistrationTemplate(validClientRegistrationTemplate(TenantId.SYS_TENANT_ID, UUID.randomUUID().toString())); 91 + oAuth2ConfigTemplateService.saveClientRegistrationTemplate(validClientRegistrationTemplate(UUID.randomUUID().toString()));
  92 + oAuth2ConfigTemplateService.saveClientRegistrationTemplate(validClientRegistrationTemplate(UUID.randomUUID().toString()));
  93 + OAuth2ClientRegistrationTemplate saved = oAuth2ConfigTemplateService.saveClientRegistrationTemplate(validClientRegistrationTemplate(UUID.randomUUID().toString()));
96 94
97 Assert.assertEquals(3, oAuth2ConfigTemplateService.findAllClientRegistrationTemplates().size()); 95 Assert.assertEquals(3, oAuth2ConfigTemplateService.findAllClientRegistrationTemplates().size());
98 Assert.assertNotNull(oAuth2ConfigTemplateService.findClientRegistrationTemplateById(saved.getId())); 96 Assert.assertNotNull(oAuth2ConfigTemplateService.findClientRegistrationTemplateById(saved.getId()));
@@ -103,10 +101,9 @@ public class BaseOAuth2ConfigTemplateServiceTest extends AbstractServiceTest { @@ -103,10 +101,9 @@ public class BaseOAuth2ConfigTemplateServiceTest extends AbstractServiceTest {
103 Assert.assertNull(oAuth2ConfigTemplateService.findClientRegistrationTemplateById(saved.getId())); 101 Assert.assertNull(oAuth2ConfigTemplateService.findClientRegistrationTemplateById(saved.getId()));
104 } 102 }
105 103
106 - private OAuth2ClientRegistrationTemplate validClientRegistrationTemplate(TenantId tenantId, String providerId) { 104 + private OAuth2ClientRegistrationTemplate validClientRegistrationTemplate(String providerId) {
107 OAuth2ClientRegistrationTemplate clientRegistrationTemplate = new OAuth2ClientRegistrationTemplate(); 105 OAuth2ClientRegistrationTemplate clientRegistrationTemplate = new OAuth2ClientRegistrationTemplate();
108 clientRegistrationTemplate.setProviderId(providerId); 106 clientRegistrationTemplate.setProviderId(providerId);
109 - clientRegistrationTemplate.setTenantId(tenantId);  
110 clientRegistrationTemplate.setAdditionalInfo(mapper.createObjectNode().put(UUID.randomUUID().toString(), UUID.randomUUID().toString())); 107 clientRegistrationTemplate.setAdditionalInfo(mapper.createObjectNode().put(UUID.randomUUID().toString(), UUID.randomUUID().toString()));
111 clientRegistrationTemplate.setBasic( 108 clientRegistrationTemplate.setBasic(
112 OAuth2BasicMapperConfig.builder() 109 OAuth2BasicMapperConfig.builder()
@@ -20,18 +20,14 @@ import org.junit.Assert; @@ -20,18 +20,14 @@ import org.junit.Assert;
20 import org.junit.Before; 20 import org.junit.Before;
21 import org.junit.Test; 21 import org.junit.Test;
22 import org.springframework.beans.factory.annotation.Autowired; 22 import org.springframework.beans.factory.annotation.Autowired;
23 -import org.thingsboard.server.common.data.Tenant;  
24 import org.thingsboard.server.common.data.id.TenantId; 23 import org.thingsboard.server.common.data.id.TenantId;
25 import org.thingsboard.server.common.data.oauth2.*; 24 import org.thingsboard.server.common.data.oauth2.*;
26 -import org.thingsboard.server.dao.attributes.AttributesService;  
27 import org.thingsboard.server.dao.oauth2.OAuth2Service; 25 import org.thingsboard.server.dao.oauth2.OAuth2Service;
28 import org.thingsboard.server.dao.oauth2.OAuth2Utils; 26 import org.thingsboard.server.dao.oauth2.OAuth2Utils;
29 27
30 -import java.io.IOException;  
31 import java.util.*; 28 import java.util.*;
32 import java.util.stream.Collectors; 29 import java.util.stream.Collectors;
33 30
34 -import static org.thingsboard.server.dao.oauth2.OAuth2Utils.ALLOW_OAUTH2_CONFIGURATION;  
35 import static org.thingsboard.server.dao.oauth2.OAuth2Utils.toClientRegistrations; 31 import static org.thingsboard.server.dao.oauth2.OAuth2Utils.toClientRegistrations;
36 32
37 public class BaseOAuth2ServiceTest extends AbstractServiceTest { 33 public class BaseOAuth2ServiceTest extends AbstractServiceTest {
@@ -39,56 +35,26 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest { @@ -39,56 +35,26 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
39 @Autowired 35 @Autowired
40 protected OAuth2Service oAuth2Service; 36 protected OAuth2Service oAuth2Service;
41 37
42 - @Autowired  
43 - protected AttributesService attributesService;  
44 -  
45 - private TenantId tenantId;  
46 -  
47 @Before 38 @Before
48 - public void beforeRun() throws Exception {  
49 - Tenant tenant = new Tenant();  
50 - tenant.setTitle("My tenant");  
51 - Tenant savedTenant = tenantService.saveTenant(tenant);  
52 - Assert.assertNotNull(savedTenant);  
53 - tenantId = savedTenant.getId();  
54 - 39 + public void beforeRun() {
55 Assert.assertTrue(oAuth2Service.findAllClientRegistrations().isEmpty()); 40 Assert.assertTrue(oAuth2Service.findAllClientRegistrations().isEmpty());
56 } 41 }
57 42
58 @After 43 @After
59 - public void after() throws Exception {  
60 - tenantService.deleteTenant(tenantId);  
61 - oAuth2Service.deleteClientRegistrationsByTenantId(TenantId.SYS_TENANT_ID);  
62 - 44 + public void after() {
  45 + oAuth2Service.findAllClientRegistrations().forEach(clientRegistration -> {
  46 + oAuth2Service.deleteClientRegistrationById(clientRegistration.getId());
  47 + });
63 Assert.assertTrue(oAuth2Service.findAllClientRegistrations().isEmpty()); 48 Assert.assertTrue(oAuth2Service.findAllClientRegistrations().isEmpty());
64 } 49 }
65 50
66 @Test 51 @Test
67 - public void testIsOAuth2Allowed_null() throws IOException {  
68 - updateTenantAllowOAuth2Setting(null);  
69 - Assert.assertFalse(oAuth2Service.isOAuth2ClientRegistrationAllowed(tenantId));  
70 - }  
71 -  
72 - @Test  
73 - public void testIsOAuth2Allowed_false() throws IOException {  
74 - updateTenantAllowOAuth2Setting(false);  
75 - Assert.assertFalse(oAuth2Service.isOAuth2ClientRegistrationAllowed(tenantId));  
76 - }  
77 -  
78 - @Test  
79 - public void testIsOAuth2Allowed_true() throws IOException {  
80 - updateTenantAllowOAuth2Setting(true);  
81 - Assert.assertTrue(oAuth2Service.isOAuth2ClientRegistrationAllowed(tenantId));  
82 - }  
83 -  
84 -  
85 - @Test  
86 - public void testCreateNewSystemParams() {  
87 - OAuth2ClientRegistration clientRegistration = validClientRegistration(TenantId.SYS_TENANT_ID);  
88 - List<OAuth2ClientsDomainParams> savedDomainsParams = oAuth2Service.saveDomainsParams(TenantId.SYS_TENANT_ID, OAuth2Utils.toDomainsParams(Collections.singletonList(clientRegistration))); 52 + public void testCreateNewParams() {
  53 + OAuth2ClientRegistration clientRegistration = validClientRegistration("domain-name");
  54 + List<OAuth2ClientsDomainParams> savedDomainsParams = oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Collections.singletonList(clientRegistration)));
89 Assert.assertNotNull(savedDomainsParams); 55 Assert.assertNotNull(savedDomainsParams);
90 56
91 - List<OAuth2ClientRegistration> savedClientRegistrations = OAuth2Utils.toClientRegistrations(TenantId.SYS_TENANT_ID, savedDomainsParams); 57 + List<OAuth2ClientRegistration> savedClientRegistrations = OAuth2Utils.toClientRegistrations(savedDomainsParams);
92 Assert.assertEquals(1, savedClientRegistrations.size()); 58 Assert.assertEquals(1, savedClientRegistrations.size());
93 59
94 OAuth2ClientRegistration savedClientRegistration = savedClientRegistrations.get(0); 60 OAuth2ClientRegistration savedClientRegistration = savedClientRegistrations.get(0);
@@ -96,55 +62,21 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest { @@ -96,55 +62,21 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
96 clientRegistration.setId(savedClientRegistration.getId()); 62 clientRegistration.setId(savedClientRegistration.getId());
97 clientRegistration.setCreatedTime(savedClientRegistration.getCreatedTime()); 63 clientRegistration.setCreatedTime(savedClientRegistration.getCreatedTime());
98 Assert.assertEquals(clientRegistration, savedClientRegistration); 64 Assert.assertEquals(clientRegistration, savedClientRegistration);
99 - }  
100 -  
101 - @Test  
102 - public void testFindSystemParamsByTenant() {  
103 - OAuth2ClientRegistration clientRegistration = validClientRegistration(TenantId.SYS_TENANT_ID);  
104 - oAuth2Service.saveDomainsParams(TenantId.SYS_TENANT_ID, OAuth2Utils.toDomainsParams(Collections.singletonList(clientRegistration)));  
105 -  
106 - List<OAuth2ClientsDomainParams> foundDomainsParams = oAuth2Service.findDomainsParamsByTenantId(TenantId.SYS_TENANT_ID);  
107 - Assert.assertEquals(1, foundDomainsParams.size());  
108 - Assert.assertEquals(1, oAuth2Service.findAllClientRegistrations().size());  
109 65
110 - List<OAuth2ClientRegistration> foundClientRegistrations = OAuth2Utils.toClientRegistrations(TenantId.SYS_TENANT_ID, foundDomainsParams);  
111 - OAuth2ClientRegistration foundClientRegistration = foundClientRegistrations.get(0);  
112 - Assert.assertNotNull(foundClientRegistration);  
113 - clientRegistration.setId(foundClientRegistration.getId());  
114 - clientRegistration.setCreatedTime(foundClientRegistration.getCreatedTime());  
115 - Assert.assertEquals(clientRegistration, foundClientRegistration); 66 + oAuth2Service.deleteClientRegistrationsByDomain("domain-name");
116 } 67 }
117 68
118 @Test 69 @Test
119 - public void testCreateNewTenantParams() {  
120 - OAuth2ClientRegistration clientRegistration = validClientRegistration(tenantId);  
121 - List<OAuth2ClientsDomainParams> savedDomainsParams = oAuth2Service.saveDomainsParams(tenantId, OAuth2Utils.toDomainsParams(Collections.singletonList(clientRegistration)));  
122 - Assert.assertNotNull(savedDomainsParams); 70 + public void testFindDomainParams() {
  71 + OAuth2ClientRegistration clientRegistration = validClientRegistration();
  72 + oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Collections.singletonList(clientRegistration)));
123 73
124 - List<OAuth2ClientRegistration> savedClientRegistrations = OAuth2Utils.toClientRegistrations(tenantId, savedDomainsParams);  
125 - Assert.assertEquals(1, savedClientRegistrations.size());  
126 -  
127 - OAuth2ClientRegistration savedClientRegistration = savedClientRegistrations.get(0);  
128 -  
129 - Assert.assertNotNull(savedClientRegistration);  
130 - Assert.assertNotNull(savedClientRegistration.getId());  
131 - clientRegistration.setId(savedClientRegistration.getId());  
132 - clientRegistration.setCreatedTime(savedClientRegistration.getCreatedTime());  
133 - Assert.assertEquals(clientRegistration, savedClientRegistration);  
134 - }  
135 -  
136 - @Test  
137 - public void testFindTenantParams() {  
138 - OAuth2ClientRegistration clientRegistration = validClientRegistration(tenantId);  
139 - oAuth2Service.saveDomainsParams(tenantId, OAuth2Utils.toDomainsParams(Collections.singletonList(clientRegistration)));  
140 -  
141 - List<OAuth2ClientsDomainParams> foundDomainsParams = oAuth2Service.findDomainsParamsByTenantId(tenantId); 74 + List<OAuth2ClientsDomainParams> foundDomainsParams = oAuth2Service.findDomainsParams();
142 Assert.assertEquals(1, foundDomainsParams.size()); 75 Assert.assertEquals(1, foundDomainsParams.size());
143 Assert.assertEquals(1, oAuth2Service.findAllClientRegistrations().size()); 76 Assert.assertEquals(1, oAuth2Service.findAllClientRegistrations().size());
144 77
145 - List<OAuth2ClientRegistration> foundClientRegistrations = OAuth2Utils.toClientRegistrations(tenantId, foundDomainsParams); 78 + List<OAuth2ClientRegistration> foundClientRegistrations = OAuth2Utils.toClientRegistrations(foundDomainsParams);
146 OAuth2ClientRegistration foundClientRegistration = foundClientRegistrations.get(0); 79 OAuth2ClientRegistration foundClientRegistration = foundClientRegistrations.get(0);
147 -  
148 Assert.assertNotNull(foundClientRegistration); 80 Assert.assertNotNull(foundClientRegistration);
149 clientRegistration.setId(foundClientRegistration.getId()); 81 clientRegistration.setId(foundClientRegistration.getId());
150 clientRegistration.setCreatedTime(foundClientRegistration.getCreatedTime()); 82 clientRegistration.setCreatedTime(foundClientRegistration.getCreatedTime());
@@ -152,39 +84,18 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest { @@ -152,39 +84,18 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
152 } 84 }
153 85
154 @Test 86 @Test
155 - public void testGetClientRegistrationWithTenant() {  
156 - OAuth2ClientRegistration tenantClientRegistration = validClientRegistration(tenantId);  
157 - OAuth2ClientRegistration sysAdminClientRegistration = validClientRegistration(TenantId.SYS_TENANT_ID);  
158 -  
159 - List<OAuth2ClientsDomainParams> savedTenantDomainsParams = oAuth2Service.saveDomainsParams(tenantId,  
160 - OAuth2Utils.toDomainsParams(Collections.singletonList(tenantClientRegistration)));  
161 - List<OAuth2ClientsDomainParams> savedSysAdminDomainsParams = oAuth2Service.saveDomainsParams(TenantId.SYS_TENANT_ID,  
162 - OAuth2Utils.toDomainsParams(Collections.singletonList(sysAdminClientRegistration)));  
163 -  
164 - Assert.assertEquals(2, oAuth2Service.findAllClientRegistrations().size());  
165 -  
166 - Assert.assertEquals(savedTenantDomainsParams, oAuth2Service.findDomainsParamsByTenantId(tenantId));  
167 - Assert.assertEquals(savedSysAdminDomainsParams, oAuth2Service.findDomainsParamsByTenantId(TenantId.SYS_TENANT_ID));  
168 -  
169 - OAuth2ClientRegistration savedTenantClientRegistration = toClientRegistrations(tenantId, savedTenantDomainsParams).get(0);  
170 - Assert.assertEquals(savedTenantClientRegistration, oAuth2Service.findClientRegistration(savedTenantClientRegistration.getUuidId()));  
171 - OAuth2ClientRegistration savedSysAdminClientRegistration = toClientRegistrations(TenantId.SYS_TENANT_ID, savedSysAdminDomainsParams).get(0);  
172 - Assert.assertEquals(savedSysAdminClientRegistration, oAuth2Service.findClientRegistration(savedSysAdminClientRegistration.getUuidId()));  
173 - }  
174 -  
175 - @Test  
176 public void testGetOAuth2Clients() { 87 public void testGetOAuth2Clients() {
177 String testDomainName = "test_domain"; 88 String testDomainName = "test_domain";
178 - OAuth2ClientRegistration tenantClientRegistration = validClientRegistration(tenantId, testDomainName);  
179 - OAuth2ClientRegistration sysAdminClientRegistration = validClientRegistration(TenantId.SYS_TENANT_ID, testDomainName); 89 + OAuth2ClientRegistration first = validClientRegistration(testDomainName);
  90 + OAuth2ClientRegistration second = validClientRegistration(testDomainName);
180 91
181 - oAuth2Service.saveDomainsParams(tenantId, OAuth2Utils.toDomainsParams(Collections.singletonList(tenantClientRegistration)));  
182 - oAuth2Service.saveDomainsParams(TenantId.SYS_TENANT_ID, OAuth2Utils.toDomainsParams(Collections.singletonList(sysAdminClientRegistration))); 92 + oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Collections.singletonList(first)));
  93 + oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Collections.singletonList(second)));
183 94
184 List<OAuth2ClientInfo> oAuth2Clients = oAuth2Service.getOAuth2Clients(testDomainName); 95 List<OAuth2ClientInfo> oAuth2Clients = oAuth2Service.getOAuth2Clients(testDomainName);
185 96
186 - Set<String> actualLabels = new HashSet<>(Arrays.asList(tenantClientRegistration.getLoginButtonLabel(),  
187 - sysAdminClientRegistration.getLoginButtonLabel())); 97 + Set<String> actualLabels = new HashSet<>(Arrays.asList(first.getLoginButtonLabel(),
  98 + second.getLoginButtonLabel()));
188 99
189 Set<String> foundLabels = oAuth2Clients.stream().map(OAuth2ClientInfo::getName).collect(Collectors.toSet()); 100 Set<String> foundLabels = oAuth2Clients.stream().map(OAuth2ClientInfo::getName).collect(Collectors.toSet());
190 Assert.assertEquals(actualLabels, foundLabels); 101 Assert.assertEquals(actualLabels, foundLabels);
@@ -193,88 +104,61 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest { @@ -193,88 +104,61 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
193 @Test 104 @Test
194 public void testGetEmptyOAuth2Clients() { 105 public void testGetEmptyOAuth2Clients() {
195 String testDomainName = "test_domain"; 106 String testDomainName = "test_domain";
196 - OAuth2ClientRegistration tenantClientRegistration = validClientRegistration(tenantId, testDomainName);  
197 - OAuth2ClientRegistration sysAdminClientRegistration = validClientRegistration(TenantId.SYS_TENANT_ID, testDomainName);  
198 - oAuth2Service.saveDomainsParams(tenantId, OAuth2Utils.toDomainsParams(Collections.singletonList(tenantClientRegistration)));  
199 - oAuth2Service.saveDomainsParams(TenantId.SYS_TENANT_ID, OAuth2Utils.toDomainsParams(Collections.singletonList(sysAdminClientRegistration))); 107 + OAuth2ClientRegistration tenantClientRegistration = validClientRegistration(testDomainName);
  108 + OAuth2ClientRegistration sysAdminClientRegistration = validClientRegistration(testDomainName);
  109 + oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Collections.singletonList(tenantClientRegistration)));
  110 + oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Collections.singletonList(sysAdminClientRegistration)));
200 List<OAuth2ClientInfo> oAuth2Clients = oAuth2Service.getOAuth2Clients("random-domain"); 111 List<OAuth2ClientInfo> oAuth2Clients = oAuth2Service.getOAuth2Clients("random-domain");
201 Assert.assertTrue(oAuth2Clients.isEmpty()); 112 Assert.assertTrue(oAuth2Clients.isEmpty());
202 } 113 }
203 114
204 @Test 115 @Test
205 public void testDeleteOAuth2ClientRegistration() { 116 public void testDeleteOAuth2ClientRegistration() {
206 - OAuth2ClientRegistration tenantClientRegistration = validClientRegistration(tenantId);  
207 - OAuth2ClientRegistration sysAdminClientRegistration = validClientRegistration(TenantId.SYS_TENANT_ID); 117 + OAuth2ClientRegistration first = validClientRegistration();
  118 + OAuth2ClientRegistration second = validClientRegistration();
208 119
209 - List<OAuth2ClientsDomainParams> savedTenantDomainsParams = oAuth2Service.saveDomainsParams(tenantId,  
210 - OAuth2Utils.toDomainsParams(Collections.singletonList(tenantClientRegistration)));  
211 - List<OAuth2ClientsDomainParams> savedSysAdminDomainsParams = oAuth2Service.saveDomainsParams(TenantId.SYS_TENANT_ID,  
212 - OAuth2Utils.toDomainsParams(Collections.singletonList(sysAdminClientRegistration))); 120 + List<OAuth2ClientsDomainParams> savedFirstDomainsParams = oAuth2Service.saveDomainsParams(
  121 + OAuth2Utils.toDomainsParams(Collections.singletonList(first)));
  122 + List<OAuth2ClientsDomainParams> savedSecondDomainsParams = oAuth2Service.saveDomainsParams(
  123 + OAuth2Utils.toDomainsParams(Collections.singletonList(second)));
213 124
214 - OAuth2ClientRegistration savedTenantRegistration = toClientRegistrations(tenantId, savedTenantDomainsParams).get(0);  
215 - OAuth2ClientRegistration savedSysAdminRegistration = toClientRegistrations(TenantId.SYS_TENANT_ID, savedSysAdminDomainsParams).get(0); 125 + OAuth2ClientRegistration savedFirstRegistration = toClientRegistrations(savedFirstDomainsParams).get(0);
  126 + OAuth2ClientRegistration savedSecondRegistration = toClientRegistrations(savedSecondDomainsParams).get(0);
216 127
217 - oAuth2Service.deleteClientRegistrationById(tenantId, savedTenantRegistration.getId()); 128 + oAuth2Service.deleteClientRegistrationById(savedFirstRegistration.getId());
218 List<OAuth2ClientRegistration> foundRegistrations = oAuth2Service.findAllClientRegistrations(); 129 List<OAuth2ClientRegistration> foundRegistrations = oAuth2Service.findAllClientRegistrations();
219 Assert.assertEquals(1, foundRegistrations.size()); 130 Assert.assertEquals(1, foundRegistrations.size());
220 - Assert.assertEquals(savedSysAdminRegistration, foundRegistrations.get(0)); 131 + Assert.assertEquals(savedSecondRegistration, foundRegistrations.get(0));
221 } 132 }
222 133
223 @Test 134 @Test
224 - public void testDeleteTenantOAuth2ClientRegistrations() {  
225 - oAuth2Service.saveDomainsParams(tenantId, OAuth2Utils.toDomainsParams(Arrays.asList(  
226 - validClientRegistration(tenantId, "domain"),  
227 - validClientRegistration(tenantId, "domain"),  
228 - validClientRegistration(tenantId, "domain") 135 + public void testDeleteDomainOAuth2ClientRegistrations() {
  136 + oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Arrays.asList(
  137 + validClientRegistration("domain1"),
  138 + validClientRegistration("domain1"),
  139 + validClientRegistration("domain2")
229 ))); 140 )));
230 - Assert.assertEquals(3, oAuth2Service.findAllClientRegistrations().size());  
231 - Assert.assertEquals(1, oAuth2Service.findDomainsParamsByTenantId(tenantId).size());  
232 -  
233 - oAuth2Service.deleteClientRegistrationsByTenantId(tenantId);  
234 - Assert.assertEquals(0, oAuth2Service.findAllClientRegistrations().size());  
235 - Assert.assertEquals(0, oAuth2Service.findDomainsParamsByTenantId(tenantId).size());  
236 - }  
237 -  
238 - @Test  
239 - public void testDeleteTenantDomainOAuth2ClientRegistrations() {  
240 - oAuth2Service.saveDomainsParams(tenantId, OAuth2Utils.toDomainsParams(Arrays.asList(  
241 - validClientRegistration(tenantId, "domain1"),  
242 - validClientRegistration(tenantId, "domain1"),  
243 - validClientRegistration(tenantId, "domain2")  
244 - )));  
245 - oAuth2Service.saveDomainsParams(TenantId.SYS_TENANT_ID, OAuth2Utils.toDomainsParams(Arrays.asList(  
246 - validClientRegistration(TenantId.SYS_TENANT_ID, "domain2") 141 + oAuth2Service.saveDomainsParams(OAuth2Utils.toDomainsParams(Arrays.asList(
  142 + validClientRegistration("domain2")
247 ))); 143 )));
248 Assert.assertEquals(4, oAuth2Service.findAllClientRegistrations().size()); 144 Assert.assertEquals(4, oAuth2Service.findAllClientRegistrations().size());
249 - List<OAuth2ClientsDomainParams> tenantDomainsParams = oAuth2Service.findDomainsParamsByTenantId(tenantId);  
250 - List<OAuth2ClientRegistration> tenantClientRegistrations = toClientRegistrations(tenantId, tenantDomainsParams);  
251 - Assert.assertEquals(2, tenantDomainsParams.size());  
252 - Assert.assertEquals(3, tenantClientRegistrations.size()); 145 + List<OAuth2ClientsDomainParams> domainsParams = oAuth2Service.findDomainsParams();
  146 + List<OAuth2ClientRegistration> clientRegistrations = toClientRegistrations(domainsParams);
  147 + Assert.assertEquals(2, domainsParams.size());
  148 + Assert.assertEquals(4, clientRegistrations.size());
253 149
254 - oAuth2Service.deleteClientRegistrationsByDomain(tenantId, "domain1"); 150 + oAuth2Service.deleteClientRegistrationsByDomain("domain1");
255 Assert.assertEquals(2, oAuth2Service.findAllClientRegistrations().size()); 151 Assert.assertEquals(2, oAuth2Service.findAllClientRegistrations().size());
256 - Assert.assertEquals(1, oAuth2Service.findDomainsParamsByTenantId(tenantId).size());  
257 - Assert.assertEquals(1, toClientRegistrations(tenantId, oAuth2Service.findDomainsParamsByTenantId(tenantId)).size());  
258 - }  
259 -  
260 - private void updateTenantAllowOAuth2Setting(Boolean allowOAuth2) throws IOException {  
261 - Tenant tenant = tenantService.findTenantById(tenantId);  
262 - if (allowOAuth2 == null) {  
263 - tenant.setAdditionalInfo(mapper.readTree("{}"));  
264 - } else {  
265 - String additionalInfo = "{\"" + ALLOW_OAUTH2_CONFIGURATION + "\":" + allowOAuth2 + "}";  
266 - tenant.setAdditionalInfo(mapper.readTree(additionalInfo));  
267 - tenantService.saveTenant(tenant);  
268 - } 152 + Assert.assertEquals(1, oAuth2Service.findDomainsParams().size());
  153 + Assert.assertEquals(2, toClientRegistrations(oAuth2Service.findDomainsParams()).size());
269 } 154 }
270 155
271 - private OAuth2ClientRegistration validClientRegistration(TenantId tenantId) {  
272 - return validClientRegistration(tenantId, "domainName"); 156 + private OAuth2ClientRegistration validClientRegistration() {
  157 + return validClientRegistration("domainName");
273 } 158 }
274 159
275 - private OAuth2ClientRegistration validClientRegistration(TenantId tenantId, String domainName) { 160 + private OAuth2ClientRegistration validClientRegistration(String domainName) {
276 OAuth2ClientRegistration clientRegistration = new OAuth2ClientRegistration(); 161 OAuth2ClientRegistration clientRegistration = new OAuth2ClientRegistration();
277 - clientRegistration.setTenantId(tenantId);  
278 clientRegistration.setDomainName(domainName); 162 clientRegistration.setDomainName(domainName);
279 clientRegistration.setMapperConfig( 163 clientRegistration.setMapperConfig(
280 OAuth2MapperConfig.builder() 164 OAuth2MapperConfig.builder()