diff --git a/build.gradle b/build.gradle index 3dabaeda1..5e2c52338 100644 --- a/build.gradle +++ b/build.gradle @@ -415,7 +415,7 @@ configurations.all { } dependencies { - implementation project(':stirling-common') + implementation project(':common') //tmp for security bumps implementation 'ch.qos.logback:logback-core:1.5.18' diff --git a/stirling-common/.gitignore b/common/.gitignore similarity index 100% rename from stirling-common/.gitignore rename to common/.gitignore diff --git a/common/build.gradle b/common/build.gradle new file mode 100644 index 000000000..41f738094 --- /dev/null +++ b/common/build.gradle @@ -0,0 +1,46 @@ +plugins { + id 'java-library' + id 'io.spring.dependency-management' version '1.1.7' +} + +group = 'stirling.software' +version = '0.45.6' + +ext { + lombokVersion = "1.18.38" +} + +java { + sourceCompatibility = JavaVersion.VERSION_17 +} + +repositories { + mavenCentral() +} + +configurations.all { + exclude group: 'commons-logging', module: 'commons-logging' + exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat" +} + +dependencyManagement { + imports { + mavenBom 'org.springframework.boot:spring-boot-dependencies:3.4.5' + } +} + +dependencies { + implementation "org.springframework.boot:spring-boot-starter-web" + implementation "org.springframework.boot:spring-boot-starter-thymeleaf" + + compileOnly "org.projectlombok:lombok:$lombokVersion" + annotationProcessor "org.projectlombok:lombok:$lombokVersion" + + testImplementation platform('org.junit:junit-bom:5.10.0') + testImplementation "org.springframework.boot:spring-boot-starter-test" + testImplementation 'org.junit.jupiter:junit-jupiter' +} + +test { + useJUnitPlatform() +} diff --git a/stirling-common/src/main/java/stirling/software/common/configuration/AppConfig.java b/common/src/main/java/stirling/software/common/configuration/AppConfig.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/configuration/AppConfig.java rename to common/src/main/java/stirling/software/common/configuration/AppConfig.java diff --git a/stirling-common/src/main/java/stirling/software/common/configuration/DatabaseConfig.java b/common/src/main/java/stirling/software/common/configuration/DatabaseConfig.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/configuration/DatabaseConfig.java rename to common/src/main/java/stirling/software/common/configuration/DatabaseConfig.java diff --git a/stirling-common/src/main/java/stirling/software/common/configuration/FileFallbackTemplateResolver.java b/common/src/main/java/stirling/software/common/configuration/FileFallbackTemplateResolver.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/configuration/FileFallbackTemplateResolver.java rename to common/src/main/java/stirling/software/common/configuration/FileFallbackTemplateResolver.java diff --git a/stirling-common/src/main/java/stirling/software/common/configuration/InstallationPathConfig.java b/common/src/main/java/stirling/software/common/configuration/InstallationPathConfig.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/configuration/InstallationPathConfig.java rename to common/src/main/java/stirling/software/common/configuration/InstallationPathConfig.java diff --git a/stirling-common/src/main/java/stirling/software/common/configuration/YamlConfig.java b/common/src/main/java/stirling/software/common/configuration/YamlConfig.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/configuration/YamlConfig.java rename to common/src/main/java/stirling/software/common/configuration/YamlConfig.java diff --git a/stirling-common/src/main/java/stirling/software/common/configuration/YamlPropertySourceFactory.java b/common/src/main/java/stirling/software/common/configuration/YamlPropertySourceFactory.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/configuration/YamlPropertySourceFactory.java rename to common/src/main/java/stirling/software/common/configuration/YamlPropertySourceFactory.java diff --git a/stirling-common/src/main/java/stirling/software/common/model/ApplicationProperties.java b/common/src/main/java/stirling/software/common/model/ApplicationProperties.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/model/ApplicationProperties.java rename to common/src/main/java/stirling/software/common/model/ApplicationProperties.java diff --git a/stirling-common/src/main/java/stirling/software/common/model/InputStreamTemplateResource.java b/common/src/main/java/stirling/software/common/model/InputStreamTemplateResource.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/model/InputStreamTemplateResource.java rename to common/src/main/java/stirling/software/common/model/InputStreamTemplateResource.java diff --git a/stirling-common/src/main/java/stirling/software/common/model/enumeration/UsernameAttribute.java b/common/src/main/java/stirling/software/common/model/enumeration/UsernameAttribute.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/model/enumeration/UsernameAttribute.java rename to common/src/main/java/stirling/software/common/model/enumeration/UsernameAttribute.java diff --git a/stirling-common/src/main/java/stirling/software/common/model/exception/UnsupportedProviderException.java b/common/src/main/java/stirling/software/common/model/exception/UnsupportedProviderException.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/model/exception/UnsupportedProviderException.java rename to common/src/main/java/stirling/software/common/model/exception/UnsupportedProviderException.java diff --git a/stirling-common/src/main/java/stirling/software/common/model/exception/UnsupportedUsernameAttribute.java b/common/src/main/java/stirling/software/common/model/exception/UnsupportedUsernameAttribute.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/model/exception/UnsupportedUsernameAttribute.java rename to common/src/main/java/stirling/software/common/model/exception/UnsupportedUsernameAttribute.java diff --git a/stirling-common/src/main/java/stirling/software/common/model/provider/GitHubProvider.java b/common/src/main/java/stirling/software/common/model/provider/GitHubProvider.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/model/provider/GitHubProvider.java rename to common/src/main/java/stirling/software/common/model/provider/GitHubProvider.java diff --git a/stirling-common/src/main/java/stirling/software/common/model/provider/GoogleProvider.java b/common/src/main/java/stirling/software/common/model/provider/GoogleProvider.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/model/provider/GoogleProvider.java rename to common/src/main/java/stirling/software/common/model/provider/GoogleProvider.java diff --git a/stirling-common/src/main/java/stirling/software/common/model/provider/KeycloakProvider.java b/common/src/main/java/stirling/software/common/model/provider/KeycloakProvider.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/model/provider/KeycloakProvider.java rename to common/src/main/java/stirling/software/common/model/provider/KeycloakProvider.java diff --git a/stirling-common/src/main/java/stirling/software/common/model/provider/Provider.java b/common/src/main/java/stirling/software/common/model/provider/Provider.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/model/provider/Provider.java rename to common/src/main/java/stirling/software/common/model/provider/Provider.java diff --git a/stirling-common/src/main/java/stirling/software/common/util/Validator.java b/common/src/main/java/stirling/software/common/util/Validator.java similarity index 100% rename from stirling-common/src/main/java/stirling/software/common/util/Validator.java rename to common/src/main/java/stirling/software/common/util/Validator.java diff --git a/src/test/java/stirling/software/SPDF/config/security/database/DatabaseConfigTest.java b/common/src/test/java/stirling/software/common/configuration/DatabaseConfigTest.java similarity index 96% rename from src/test/java/stirling/software/SPDF/config/security/database/DatabaseConfigTest.java rename to common/src/test/java/stirling/software/common/configuration/DatabaseConfigTest.java index c734a8b7e..b5982515d 100644 --- a/src/test/java/stirling/software/SPDF/config/security/database/DatabaseConfigTest.java +++ b/common/src/test/java/stirling/software/common/configuration/DatabaseConfigTest.java @@ -1,4 +1,4 @@ -package stirling.software.SPDF.config.security.database; +package stirling.software.common.configuration; import static org.junit.jupiter.api.Assertions.assertInstanceOf; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -14,7 +14,6 @@ import org.junit.jupiter.params.provider.ValueSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import stirling.software.common.configuration.DatabaseConfig; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.exception.UnsupportedProviderException; diff --git a/stirling-common/src/test/java/stirling/software/common/util/ValidatorTest.java b/common/src/test/java/stirling/software/common/util/ValidatorTest.java similarity index 100% rename from stirling-common/src/test/java/stirling/software/common/util/ValidatorTest.java rename to common/src/test/java/stirling/software/common/util/ValidatorTest.java diff --git a/settings.gradle b/settings.gradle index a5ca29429..0dbeab6e7 100644 --- a/settings.gradle +++ b/settings.gradle @@ -4,4 +4,4 @@ plugins { } rootProject.name = 'Stirling-PDF' -include 'stirling-common' \ No newline at end of file +include 'common' diff --git a/src/main/java/stirling/software/SPDF/config/security/UserService.java b/src/main/java/stirling/software/SPDF/config/security/UserService.java index c7a6e363a..3d094145c 100644 --- a/src/main/java/stirling/software/SPDF/config/security/UserService.java +++ b/src/main/java/stirling/software/SPDF/config/security/UserService.java @@ -2,10 +2,15 @@ package stirling.software.SPDF.config.security; import java.io.IOException; import java.sql.SQLException; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.UUID; import org.springframework.context.MessageSource; -import org.springframework.context.annotation.Lazy; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; @@ -27,7 +32,10 @@ import stirling.software.SPDF.config.interfaces.DatabaseInterface; import stirling.software.SPDF.config.security.saml2.CustomSaml2AuthenticatedPrincipal; import stirling.software.SPDF.config.security.session.SessionPersistentRegistry; import stirling.software.SPDF.controller.api.pipeline.UserServiceInterface; -import stirling.software.SPDF.model.*; +import stirling.software.SPDF.model.AuthenticationType; +import stirling.software.SPDF.model.Authority; +import stirling.software.SPDF.model.Role; +import stirling.software.SPDF.model.User; import stirling.software.SPDF.repository.AuthorityRepository; import stirling.software.SPDF.repository.UserRepository; import stirling.software.common.model.ApplicationProperties; @@ -48,7 +56,7 @@ public class UserService implements UserServiceInterface { private final SessionPersistentRegistry sessionRegistry; - @Lazy private final DatabaseInterface databaseService; + private final DatabaseInterface databaseService; private final ApplicationProperties.Security.OAUTH2 oAuth2; diff --git a/src/main/java/stirling/software/SPDF/config/security/database/DatabaseService.java b/src/main/java/stirling/software/SPDF/config/security/database/DatabaseService.java index ac5f7d1e4..fed520789 100644 --- a/src/main/java/stirling/software/SPDF/config/security/database/DatabaseService.java +++ b/src/main/java/stirling/software/SPDF/config/security/database/DatabaseService.java @@ -21,7 +21,6 @@ import java.util.stream.Collectors; import javax.sql.DataSource; -import org.springframework.context.annotation.Lazy; import org.springframework.jdbc.datasource.init.CannotReadScriptException; import org.springframework.jdbc.datasource.init.ScriptException; import org.springframework.stereotype.Service; @@ -34,7 +33,6 @@ import stirling.software.SPDF.utils.FileInfo; import stirling.software.common.configuration.InstallationPathConfig; import stirling.software.common.model.ApplicationProperties; -@Lazy @Slf4j @Service public class DatabaseService implements DatabaseInterface { @@ -44,7 +42,7 @@ public class DatabaseService implements DatabaseInterface { private final Path BACKUP_DIR; private final ApplicationProperties.Datasource datasourceProps; - @Lazy private final DataSource dataSource; + private final DataSource dataSource; public DatabaseService( ApplicationProperties.Datasource datasourceProps, DataSource dataSource) { diff --git a/src/main/java/stirling/software/SPDF/config/security/mail/EmailService.java b/src/main/java/stirling/software/SPDF/config/security/mail/EmailService.java index 507e51599..e27a2b681 100644 --- a/src/main/java/stirling/software/SPDF/config/security/mail/EmailService.java +++ b/src/main/java/stirling/software/SPDF/config/security/mail/EmailService.java @@ -12,8 +12,8 @@ import jakarta.mail.internet.MimeMessage; import lombok.RequiredArgsConstructor; -import stirling.software.SPDF.model.ApplicationProperties; import stirling.software.SPDF.model.api.Email; +import stirling.software.common.model.ApplicationProperties; /** * Service class responsible for sending emails, including those with attachments. It uses diff --git a/src/main/java/stirling/software/SPDF/config/security/mail/MailConfig.java b/src/main/java/stirling/software/SPDF/config/security/mail/MailConfig.java index 68c2fe35d..0181271d3 100644 --- a/src/main/java/stirling/software/SPDF/config/security/mail/MailConfig.java +++ b/src/main/java/stirling/software/SPDF/config/security/mail/MailConfig.java @@ -11,7 +11,7 @@ import org.springframework.mail.javamail.JavaMailSenderImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import stirling.software.SPDF.model.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; /** * This configuration class provides the JavaMailSender bean, which is used to send emails. It reads diff --git a/src/main/java/stirling/software/SPDF/controller/api/UserController.java b/src/main/java/stirling/software/SPDF/controller/api/UserController.java index 373a8f5ec..1f2ccd1fd 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/UserController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/UserController.java @@ -171,16 +171,19 @@ public class UserController { * Updates the user settings based on the provided JSON payload. * * @param updates A map containing the settings to update. The expected structure is: - *