Browse Source

Removed cache from OAuth2Service

pull/3557/head
vzikratyi 6 years ago
parent
commit
b732171611
  1. 21
      dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java
  2. 16
      dao/src/test/java/org/thingsboard/server/dao/service/BaseOAuth2ServiceTest.java

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

@ -57,7 +57,6 @@ public class OAuth2ServiceImpl implements OAuth2Service {
private static final ObjectMapper mapper = new ObjectMapper(); private static final ObjectMapper mapper = new ObjectMapper();
private final ReentrantLock clientRegistrationSaveLock = new ReentrantLock(); private final ReentrantLock clientRegistrationSaveLock = new ReentrantLock();
private final Map<TenantId, OAuth2ClientsParams> clientsParams = new ConcurrentHashMap<>();
@Autowired @Autowired
private Environment environment; private Environment environment;
@ -75,18 +74,9 @@ public class OAuth2ServiceImpl implements OAuth2Service {
return environment.acceptsProfiles("install"); return environment.acceptsProfiles("install");
} }
@PostConstruct
public void init() {
if (isInstall()) return;
Map<TenantId, OAuth2ClientsParams> allOAuth2ClientsParams = getAllOAuth2ClientsParams();
allOAuth2ClientsParams.forEach(clientsParams::put);
}
@Override @Override
public Pair<TenantId, OAuth2ClientRegistration> getClientRegistrationWithTenant(String registrationId) { public Pair<TenantId, OAuth2ClientRegistration> getClientRegistrationWithTenant(String registrationId) {
return clientsParams.entrySet().stream() return getAllOAuth2ClientsParams().entrySet().stream()
.map(entry -> { .map(entry -> {
TenantId tenantId = entry.getKey(); TenantId tenantId = entry.getKey();
OAuth2ClientRegistration clientRegistration = toClientRegistrationStream(entry.getValue()) OAuth2ClientRegistration clientRegistration = toClientRegistrationStream(entry.getValue())
@ -135,7 +125,6 @@ public class OAuth2ServiceImpl implements OAuth2Service {
String json = toJson(oAuth2ClientsParams); String json = toJson(oAuth2ClientsParams);
((ObjectNode) oauth2SystemAdminSettings.getJsonValue()).put(SYSTEM_SETTINGS_OAUTH2_VALUE, json); ((ObjectNode) oauth2SystemAdminSettings.getJsonValue()).put(SYSTEM_SETTINGS_OAUTH2_VALUE, json);
adminSettingsService.saveAdminSettings(TenantId.SYS_TENANT_ID, oauth2SystemAdminSettings); adminSettingsService.saveAdminSettings(TenantId.SYS_TENANT_ID, oauth2SystemAdminSettings);
clientsParams.put(TenantId.SYS_TENANT_ID, oAuth2ClientsParams);
} finally { } finally {
clientRegistrationSaveLock.unlock(); clientRegistrationSaveLock.unlock();
} }
@ -167,7 +156,6 @@ public class OAuth2ServiceImpl implements OAuth2Service {
throw new IncorrectParameterException("Unable to save OAuth2 Client Registration Params to attributes!"); throw new IncorrectParameterException("Unable to save OAuth2 Client Registration Params to attributes!");
} }
clientsParams.put(tenantId, oAuth2ClientsParams);
} finally { } finally {
clientRegistrationSaveLock.unlock(); clientRegistrationSaveLock.unlock();
} }
@ -258,7 +246,7 @@ public class OAuth2ServiceImpl implements OAuth2Service {
toClientRegistrationStream(inputOAuth2ClientsParams) toClientRegistrationStream(inputOAuth2ClientsParams)
.map(OAuth2ClientRegistration::getRegistrationId) .map(OAuth2ClientRegistration::getRegistrationId)
.forEach(registrationId -> { .forEach(registrationId -> {
clientsParams.forEach((paramsTenantId, oAuth2ClientsParams) -> { getAllOAuth2ClientsParams().forEach((paramsTenantId, oAuth2ClientsParams) -> {
boolean registrationExists = toClientRegistrationStream(oAuth2ClientsParams) boolean registrationExists = toClientRegistrationStream(oAuth2ClientsParams)
.map(OAuth2ClientRegistration::getRegistrationId) .map(OAuth2ClientRegistration::getRegistrationId)
.anyMatch(registrationId::equals); .anyMatch(registrationId::equals);
@ -352,23 +340,22 @@ public class OAuth2ServiceImpl implements OAuth2Service {
@Override @Override
public void deleteTenantOAuth2ClientsParams(TenantId tenantId) { public void deleteTenantOAuth2ClientsParams(TenantId tenantId) {
OAuth2ClientsParams params = getTenantOAuth2ClientsParams(tenantId); OAuth2ClientsParams params = getTenantOAuth2ClientsParams(tenantId);
if (params == null) return; if (params == null || params.getClientsDomainsParams() == null) return;
OAuth2ClientsDomainParams domainParams = params.getClientsDomainsParams().get(0); OAuth2ClientsDomainParams domainParams = params.getClientsDomainsParams().get(0);
String settingsKey = constructAdminSettingsDomainKey(domainParams.getDomainName()); String settingsKey = constructAdminSettingsDomainKey(domainParams.getDomainName());
adminSettingsService.deleteAdminSettingsByKey(tenantId, settingsKey); adminSettingsService.deleteAdminSettingsByKey(tenantId, settingsKey);
attributesService.removeAll(tenantId, tenantId, DataConstants.SERVER_SCOPE, Collections.singletonList(OAUTH2_CLIENT_REGISTRATIONS_PARAMS)); attributesService.removeAll(tenantId, tenantId, DataConstants.SERVER_SCOPE, Collections.singletonList(OAUTH2_CLIENT_REGISTRATIONS_PARAMS));
clientsParams.remove(tenantId);
} }
@Override @Override
public void deleteSystemOAuth2ClientsParams() { public void deleteSystemOAuth2ClientsParams() {
adminSettingsService.deleteAdminSettingsByKey(TenantId.SYS_TENANT_ID, OAuth2Utils.OAUTH2_CLIENT_REGISTRATIONS_PARAMS); adminSettingsService.deleteAdminSettingsByKey(TenantId.SYS_TENANT_ID, OAuth2Utils.OAUTH2_CLIENT_REGISTRATIONS_PARAMS);
clientsParams.remove(TenantId.SYS_TENANT_ID);
} }
@Override @Override
public boolean isOAuth2ClientRegistrationAllowed(TenantId tenantId) { public boolean isOAuth2ClientRegistrationAllowed(TenantId tenantId) {
Tenant tenant = tenantService.findTenantById(tenantId); Tenant tenant = tenantService.findTenantById(tenantId);
if (tenant == null) return false;
JsonNode allowOAuth2ConfigurationJsonNode = tenant.getAdditionalInfo() != null ? tenant.getAdditionalInfo().get(ALLOW_OAUTH2_CONFIGURATION) : null; JsonNode allowOAuth2ConfigurationJsonNode = tenant.getAdditionalInfo() != null ? tenant.getAdditionalInfo().get(ALLOW_OAUTH2_CONFIGURATION) : null;
if (allowOAuth2ConfigurationJsonNode == null) { if (allowOAuth2ConfigurationJsonNode == null) {
return true; return true;

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

@ -55,8 +55,8 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
Assert.assertNotNull(savedTenant); Assert.assertNotNull(savedTenant);
tenantId = savedTenant.getId(); tenantId = savedTenant.getId();
Assert.assertNull(oAuth2Service.getSystemOAuth2ClientsParams()); Assert.assertNull(oAuth2Service.getSystemOAuth2ClientsParams().getClientsDomainsParams());
Assert.assertNull(oAuth2Service.getTenantOAuth2ClientsParams(tenantId)); Assert.assertNull(oAuth2Service.getTenantOAuth2ClientsParams(tenantId).getClientsDomainsParams());
Assert.assertTrue(attributesService.findAll(tenantId, tenantId, DataConstants.SERVER_SCOPE).get().isEmpty()); Assert.assertTrue(attributesService.findAll(tenantId, tenantId, DataConstants.SERVER_SCOPE).get().isEmpty());
Assert.assertNull(adminSettingsService.findAdminSettingsByKey(TenantId.SYS_TENANT_ID, OAuth2Utils.OAUTH2_CLIENT_REGISTRATIONS_PARAMS)); Assert.assertNull(adminSettingsService.findAdminSettingsByKey(TenantId.SYS_TENANT_ID, OAuth2Utils.OAUTH2_CLIENT_REGISTRATIONS_PARAMS));
@ -68,8 +68,8 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
tenantService.deleteTenant(tenantId); tenantService.deleteTenant(tenantId);
Assert.assertNull(oAuth2Service.getSystemOAuth2ClientsParams()); Assert.assertNull(oAuth2Service.getSystemOAuth2ClientsParams().getClientsDomainsParams());
Assert.assertNull(oAuth2Service.getTenantOAuth2ClientsParams(tenantId)); Assert.assertNull(oAuth2Service.getTenantOAuth2ClientsParams(tenantId).getClientsDomainsParams());
Assert.assertTrue(attributesService.findAll(tenantId, tenantId, DataConstants.SERVER_SCOPE).get().isEmpty()); Assert.assertTrue(attributesService.findAll(tenantId, tenantId, DataConstants.SERVER_SCOPE).get().isEmpty());
Assert.assertNull(adminSettingsService.findAdminSettingsByKey(TenantId.SYS_TENANT_ID, OAuth2Utils.OAUTH2_CLIENT_REGISTRATIONS_PARAMS)); Assert.assertNull(adminSettingsService.findAdminSettingsByKey(TenantId.SYS_TENANT_ID, OAuth2Utils.OAUTH2_CLIENT_REGISTRATIONS_PARAMS));
@ -277,22 +277,22 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
public void testDeleteSystemOAuth2ClientsParams() { public void testDeleteSystemOAuth2ClientsParams() {
OAuth2ClientsParams sysAdminClientsParams = validClientsParams(); OAuth2ClientsParams sysAdminClientsParams = validClientsParams();
Assert.assertNull(oAuth2Service.getSystemOAuth2ClientsParams()); Assert.assertNull(oAuth2Service.getSystemOAuth2ClientsParams().getClientsDomainsParams());
oAuth2Service.saveSystemOAuth2ClientsParams(sysAdminClientsParams); oAuth2Service.saveSystemOAuth2ClientsParams(sysAdminClientsParams);
Assert.assertNotNull(oAuth2Service.getSystemOAuth2ClientsParams()); Assert.assertNotNull(oAuth2Service.getSystemOAuth2ClientsParams().getClientsDomainsParams());
} }
@Test @Test
public void testDeleteTenantOAuth2ClientsParams() { public void testDeleteTenantOAuth2ClientsParams() {
OAuth2ClientsParams tenantClientsParams = validClientsParams(); OAuth2ClientsParams tenantClientsParams = validClientsParams();
Assert.assertNull(oAuth2Service.getTenantOAuth2ClientsParams(tenantId)); Assert.assertNull(oAuth2Service.getTenantOAuth2ClientsParams(tenantId).getClientsDomainsParams());
oAuth2Service.saveTenantOAuth2ClientsParams(tenantId, tenantClientsParams); oAuth2Service.saveTenantOAuth2ClientsParams(tenantId, tenantClientsParams);
Assert.assertNotNull(oAuth2Service.getTenantOAuth2ClientsParams(tenantId)); Assert.assertNotNull(oAuth2Service.getTenantOAuth2ClientsParams(tenantId).getClientsDomainsParams());
} }

Loading…
Cancel
Save