From b20b032f0b1f61345b19ff132b78e18ffedb5d86 Mon Sep 17 00:00:00 2001 From: viktor Date: Tue, 23 Jun 2020 11:05:46 +0300 Subject: [PATCH] Added saveSystemOAuth2ClientRegistration method --- .../server/dao/oauth2/OAuth2ServiceImpl.java | 37 +++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java index 88167bb019..18a390e783 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java @@ -15,13 +15,20 @@ */ package org.thingsboard.server.dao.oauth2; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.thingsboard.server.common.data.AdminSettings; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.oauth2.*; +import org.thingsboard.server.dao.exception.IncorrectParameterException; +import org.thingsboard.server.dao.settings.AdminSettingsService; import java.util.Collections; import java.util.List; @@ -32,10 +39,14 @@ import java.util.stream.Stream; @Service public class OAuth2ServiceImpl implements OAuth2Service { + private static final ObjectMapper mapper = new ObjectMapper(); + + private static final String OAUTH2_CLIENT_REGISTRATIONS_PARAMS = "oauth2ClientRegistrationsParams"; + private static final String OAUTH2_AUTHORIZATION_PATH_TEMPLATE = "/oauth2/authorization/%s"; - @Autowired(required = false) - OAuth2Configuration oauth2Configuration; + @Autowired + private AdminSettingsService adminSettingsService; @Override public List getOAuth2Clients() { @@ -59,11 +70,31 @@ public class OAuth2ServiceImpl implements OAuth2Service { @Override public OAuth2ClientRegistration saveSystemOAuth2ClientRegistration(OAuth2ClientRegistration clientRegistration) { - return null; + // TODO check by registration ID in entities + AdminSettings clientRegistrationParamsSettings = adminSettingsService.findAdminSettingsByKey(TenantId.SYS_TENANT_ID, OAUTH2_CLIENT_REGISTRATIONS_PARAMS); + if (clientRegistrationParamsSettings == null) { + clientRegistrationParamsSettings = new AdminSettings(); + clientRegistrationParamsSettings.setKey(OAUTH2_CLIENT_REGISTRATIONS_PARAMS); + ObjectNode node = mapper.createObjectNode(); + clientRegistrationParamsSettings.setJsonValue(node); + } + String json; + try { + json = mapper.writeValueAsString(clientRegistration); + } catch (JsonProcessingException e) { + log.error("Unable to convert OAuth2 Client Registration Params to JSON!", e); + throw new IncorrectParameterException("Unable to convert OAuth2 Client Registration Params to JSON!"); + } + ObjectNode oldClientRegistrations = (ObjectNode) clientRegistrationParamsSettings.getJsonValue(); + oldClientRegistrations.put(clientRegistration.getRegistrationId(), json); + adminSettingsService.saveAdminSettings(TenantId.SYS_TENANT_ID, clientRegistrationParamsSettings); + // TODO ask if that's worth it + return getClientRegistration(clientRegistration.getRegistrationId()); } @Override public OAuth2ClientRegistration saveTenantOAuth2ClientRegistration(TenantId tenantId, OAuth2ClientRegistration clientRegistration) { + // TODO check by registration ID in system return null; }