This is an automated email from the ASF dual-hosted git repository.

aleks pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new 356dd07ca0 FINERACT-1932: Fineract modularization - fineract-security
356dd07ca0 is described below

commit 356dd07ca081c31570a20d3f1699875475e19450
Author: Jose Alberto Hernandez <[email protected]>
AuthorDate: Tue Jan 27 14:06:42 2026 -0500

    FINERACT-1932: Fineract modularization - fineract-security
---
 build.gradle                                       |  2 +
 .../filter/FineractInstanceModeApiFilter.java      |  0
 .../notification/data/NotificationData.java        |  0
 .../service/UserNotificationService.java           |  0
 .../client/service/ClientReadPlatformService.java  |  0
 fineract-provider/dependencies.gradle              |  1 +
 fineract-security/build.gradle                     | 77 +++++++++++++++++
 fineract-security/dependencies.gradle              | 98 ++++++++++++++++++++++
 .../security/api/AuthenticationApiResource.java    |  0
 .../api/AuthenticationApiResourceSwagger.java      |  0
 .../security/api/LoginController.java              |  0
 .../security/api/TwoFactorApiResource.java         |  0
 .../api/TwoFactorConfigurationApiResource.java     |  0
 .../security/api/UserDetailsApiResource.java       |  0
 .../api/UserDetailsApiResourceSwagger.java         |  0
 .../InvalidateTFAccessTokenCommandHandler.java     |  0
 .../UpdateTwoFactorConfigCommandHandler.java       |  0
 .../security/constants/TenantConstants.java        |  0
 .../constants/TwoFactorConfigurationConstants.java |  0
 .../security/constants/TwoFactorConstants.java     |  0
 .../FineractJwtAuthenticationTokenConverter.java   |  0
 .../security/data/AccessTokenData.java             |  0
 .../security/data/AuthenticatedOauthUserData.java  |  0
 .../security/data/AuthenticatedUserData.java       |  0
 .../data/FineractJwtAuthenticationToken.java       |  0
 .../security/data/OTPDeliveryMethod.java           |  0
 .../infrastructure/security/data/OTPMetadata.java  |  0
 .../infrastructure/security/data/OTPRequest.java   |  0
 .../security/data/PlatformRequestLog.java          |  0
 .../security/data/TenantAuthenticationDetails.java |  0
 .../data/TwoFactorConfigurationValidator.java      |  0
 .../security/domain/OTPRequestRepository.java      |  0
 .../security/domain/PlatformUserRepository.java    |  0
 .../security/domain/TFAccessToken.java             |  0
 .../security/domain/TFAccessTokenRepository.java   |  0
 .../security/domain/TwoFactorConfiguration.java    |  0
 .../domain/TwoFactorConfigurationRepository.java   |  0
 .../exception/AccessTokenInvalidIException.java    |  0
 .../exception/EscapeSqlLiteralException.java       |  0
 .../exception/ForcePasswordResetException.java     |  0
 .../OTPDeliveryMethodInvalidException.java         |  0
 .../exception/OTPTokenInvalidException.java        |  0
 .../security/exception/ResetPasswordException.java |  0
 .../security/filter/BusinessDateFilter.java        |  0
 .../filter/TenantAwareAuthenticationFilter.java    |  0
 .../TenantAwareBasicAuthenticationFilter.java      |  0
 .../filter/TwoFactorAuthenticationFilter.java      |  0
 .../infrastructure/security/package-info.java      | 32 +++----
 .../service/AccessTokenGenerationService.java      |  0
 .../security/service/AuthTenantDetailsService.java |  0
 .../service/AuthTenantDetailsServiceJdbc.java      |  0
 .../CustomAuthenticationFailureHandler.java        |  0
 .../security/service/RandomOTPGenerator.java       |  0
 .../SpringSecurityPlatformSecurityContext.java     |  0
 .../service/SqlInjectionPreventerServiceImpl.java  |  0
 .../TenantAwareJpaPlatformUserDetailsService.java  |  0
 .../service/TwoFactorConfigurationService.java     |  0
 .../security/service/TwoFactorService.java         |  0
 .../service/UUIDAccessTokenGenerationService.java  |  0
 .../vote/SelfServiceUserAuthorizationManager.java  |  0
 oauth2-tests/dependencies.gradle                   |  1 +
 settings.gradle                                    |  1 +
 62 files changed, 197 insertions(+), 15 deletions(-)

diff --git a/build.gradle b/build.gradle
index 655e264571..56ed56607d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -26,6 +26,7 @@ buildscript {
         fineractJavaProjects = subprojects.findAll{
             [
                 'fineract-core',
+                'fineract-security',
                 'fineract-cob',
                 'fineract-validation',
                 'fineract-command',
@@ -59,6 +60,7 @@ buildscript {
                 'fineract-client',
                 'fineract-client-feign',
                 'fineract-core',
+                'fineract-security',
                 'fineract-cob',
                 'fineract-validation',
                 'fineract-command',
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java
 
b/fineract-core/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java
rename to 
fineract-core/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/notification/data/NotificationData.java
 
b/fineract-core/src/main/java/org/apache/fineract/notification/data/NotificationData.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/notification/data/NotificationData.java
rename to 
fineract-core/src/main/java/org/apache/fineract/notification/data/NotificationData.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/notification/service/UserNotificationService.java
 
b/fineract-core/src/main/java/org/apache/fineract/notification/service/UserNotificationService.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/notification/service/UserNotificationService.java
rename to 
fineract-core/src/main/java/org/apache/fineract/notification/service/UserNotificationService.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java
 
b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java
rename to 
fineract-core/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java
diff --git a/fineract-provider/dependencies.gradle 
b/fineract-provider/dependencies.gradle
index ebf9d375cd..08cf0a95cf 100644
--- a/fineract-provider/dependencies.gradle
+++ b/fineract-provider/dependencies.gradle
@@ -40,6 +40,7 @@ dependencies {
     implementation(project(path: ':fineract-report'))
     implementation(project(path: ':fineract-tax'))
     implementation(project(path: ':fineract-loan-origination'))
+    implementation(project(path: ':fineract-security'))
 
     providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
 
diff --git a/fineract-security/build.gradle b/fineract-security/build.gradle
new file mode 100644
index 0000000000..21a9619585
--- /dev/null
+++ b/fineract-security/build.gradle
@@ -0,0 +1,77 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+description = 'Fineract Security'
+
+apply plugin: 'java'
+apply plugin: 'eclipse'
+
+configurations {
+    providedRuntime // needed for Spring Boot executable WAR
+    providedCompile
+    compile() {
+        exclude module: 'hibernate-entitymanager'
+        exclude module: 'hibernate-validator'
+        exclude module: 'activation'
+        exclude module: 'bcmail-jdk14'
+        exclude module: 'bcprov-jdk14'
+        exclude module: 'bctsp-jdk14'
+        exclude module: 'c3p0'
+        exclude module: 'stax-api'
+        exclude module: 'jaxb-api'
+        exclude module: 'jaxb-impl'
+        exclude module: 'jboss-logging'
+        exclude module: 'itext-rtf'
+        exclude module: 'classworlds'
+    }
+    runtime
+}
+
+apply from: 'dependencies.gradle'
+
+// Configuration for the modernizer plugin
+// https://github.com/andygoossens/gradle-modernizer-plugin
+modernizer {
+    ignoreClassNamePatterns = [
+        '.*AbstractPersistableCustom',
+        '.*EntityTables',
+        '.*domain.*'
+    ]
+}
+
+// If we are running Gradle within Eclipse to enhance classes with OpenJPA,
+// set the classes directory to point to Eclipse's default build directory
+if (project.hasProperty('env') && project.getProperty('env') == 'eclipse') {
+    sourceSets.main.java.outputDir = new File(rootProject.projectDir, 
"fineract-security/bin/main")
+}
+
+eclipse {
+    project {
+        buildCommand([ LaunchConfigHandle: 
"<project>/.externalToolBuilders/OpenJPA Enhance Builder.launch" ],  
'org.eclipse.ui.externaltools.ExternalToolBuilder')
+    }
+}
+
+if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
+    sourceSets {
+        test {
+            java {
+                exclude '**/core/boot/tests/**'
+            }
+        }
+    }
+}
diff --git a/fineract-security/dependencies.gradle 
b/fineract-security/dependencies.gradle
new file mode 100644
index 0000000000..43d12d9c94
--- /dev/null
+++ b/fineract-security/dependencies.gradle
@@ -0,0 +1,98 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+dependencies {
+    // Never use "compile" scope, but make all dependencies either 
'implementation', 'runtimeOnly' or 'testCompile'.
+    // Note that we never use 'api', because Fineract at least currently is a 
simple monolithic application ("WAR"), not a library.
+    // We also (normally should have) no need to ever use 'compileOnly'.
+
+    // Core module dependency
+    implementation(project(path: ':fineract-core'))
+
+    // PostgreSQL driver for SQL injection prevention utilities
+    implementation 'org.postgresql:postgresql'
+
+    // Spring Boot Security dependencies
+    implementation(
+            'org.springframework.boot:spring-boot-starter-web',
+            'org.springframework.boot:spring-boot-starter-security',
+            
'org.springframework.boot:spring-boot-starter-oauth2-authorization-server',
+            
'org.springframework.boot:spring-boot-starter-oauth2-resource-server',
+            'org.springframework.boot:spring-boot-starter-oauth2-client',
+            'org.springframework.boot:spring-boot-starter-cache',
+
+            'jakarta.ws.rs:jakarta.ws.rs-api',
+            'org.glassfish.jersey.media:jersey-media-multipart',
+
+            'com.google.guava:guava',
+            'com.google.code.gson:gson',
+
+            'org.apache.commons:commons-lang3',
+
+            'com.jayway.jsonpath:json-path',
+
+            'com.github.spotbugs:spotbugs-annotations',
+            'io.swagger.core.v3:swagger-annotations-jakarta',
+
+            'org.springdoc:springdoc-openapi-starter-webmvc-ui',
+            'org.mapstruct:mapstruct',
+            )
+
+    // JPA for security entities
+    implementation ('org.springframework.boot:spring-boot-starter-data-jpa') {
+        exclude group: 'org.hibernate'
+    }
+    implementation('org.eclipse.persistence:org.eclipse.persistence.jpa') {
+        exclude group: 'org.eclipse.persistence', module: 'jakarta.persistence'
+    }
+
+    // OWASP ESAPI for security utilities
+    implementation('org.owasp.esapi:esapi') {
+        exclude group: 'org.slf4j'
+        exclude group: 'log4j'
+        exclude group: 'commons-logging'
+        exclude group: 'commons-collections'
+        exclude group: 'commons-lang'
+        exclude group: 'spotbugs-annotations'
+        exclude group: 'xml-apis'
+    }
+
+    // Email support for OTP delivery
+    implementation ('org.apache.commons:commons-email') {
+        exclude group: 'com.sun.mail', module: 'javax.mail'
+        exclude group: 'javax.activation', module: 'activation'
+    }
+    implementation 'com.sun.mail:jakarta.mail'
+
+    compileOnly 'org.projectlombok:lombok'
+    annotationProcessor 'org.projectlombok:lombok'
+    annotationProcessor 'org.mapstruct:mapstruct-processor'
+
+    // Test dependencies
+    testImplementation( 'io.github.classgraph:classgraph' )
+    testImplementation ('org.springframework.boot:spring-boot-starter-test') {
+        exclude group: 'com.jayway.jsonpath', module: 'json-path'
+        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
+        exclude group: 'jakarta.activation'
+        exclude group: 'javax.activation'
+        exclude group: 'org.skyscreamer'
+    }
+    testImplementation ('org.mockito:mockito-inline')
+    testImplementation 'org.springframework.security:spring-security-test'
+}
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResource.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResource.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResource.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResource.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResourceSwagger.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResourceSwagger.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResourceSwagger.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/AuthenticationApiResourceSwagger.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/LoginController.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/LoginController.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/LoginController.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/LoginController.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorApiResource.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorApiResource.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorApiResource.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorApiResource.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorConfigurationApiResource.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorConfigurationApiResource.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorConfigurationApiResource.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/TwoFactorConfigurationApiResource.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResource.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResource.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResource.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResource.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResourceSwagger.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResourceSwagger.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResourceSwagger.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResourceSwagger.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/command/InvalidateTFAccessTokenCommandHandler.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/command/InvalidateTFAccessTokenCommandHandler.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/command/InvalidateTFAccessTokenCommandHandler.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/command/InvalidateTFAccessTokenCommandHandler.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/command/UpdateTwoFactorConfigCommandHandler.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/command/UpdateTwoFactorConfigCommandHandler.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/command/UpdateTwoFactorConfigCommandHandler.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/command/UpdateTwoFactorConfigCommandHandler.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TenantConstants.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/constants/TenantConstants.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TenantConstants.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/constants/TenantConstants.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConfigurationConstants.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConfigurationConstants.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConfigurationConstants.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConfigurationConstants.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConstants.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConstants.java
similarity index 100%
copy from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConstants.java
copy to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConstants.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/converter/FineractJwtAuthenticationTokenConverter.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/converter/FineractJwtAuthenticationTokenConverter.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/converter/FineractJwtAuthenticationTokenConverter.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/converter/FineractJwtAuthenticationTokenConverter.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/AccessTokenData.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/AccessTokenData.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/AccessTokenData.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/AccessTokenData.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedOauthUserData.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedOauthUserData.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedOauthUserData.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedOauthUserData.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedUserData.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedUserData.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedUserData.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/AuthenticatedUserData.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/FineractJwtAuthenticationToken.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/FineractJwtAuthenticationToken.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/FineractJwtAuthenticationToken.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/FineractJwtAuthenticationToken.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/OTPDeliveryMethod.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/OTPDeliveryMethod.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/OTPDeliveryMethod.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/OTPDeliveryMethod.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/OTPMetadata.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/OTPMetadata.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/OTPMetadata.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/OTPMetadata.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/OTPRequest.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/OTPRequest.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/OTPRequest.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/OTPRequest.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/PlatformRequestLog.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/PlatformRequestLog.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/PlatformRequestLog.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/PlatformRequestLog.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/TenantAuthenticationDetails.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/TenantAuthenticationDetails.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/TenantAuthenticationDetails.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/TenantAuthenticationDetails.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/TwoFactorConfigurationValidator.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/TwoFactorConfigurationValidator.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/TwoFactorConfigurationValidator.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/TwoFactorConfigurationValidator.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/OTPRequestRepository.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/OTPRequestRepository.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/OTPRequestRepository.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/OTPRequestRepository.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/PlatformUserRepository.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/PlatformUserRepository.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/PlatformUserRepository.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/PlatformUserRepository.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessTokenRepository.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessTokenRepository.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessTokenRepository.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessTokenRepository.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfigurationRepository.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfigurationRepository.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfigurationRepository.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfigurationRepository.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/AccessTokenInvalidIException.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/AccessTokenInvalidIException.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/AccessTokenInvalidIException.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/AccessTokenInvalidIException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/EscapeSqlLiteralException.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/EscapeSqlLiteralException.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/EscapeSqlLiteralException.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/EscapeSqlLiteralException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/ForcePasswordResetException.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/ForcePasswordResetException.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/ForcePasswordResetException.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/ForcePasswordResetException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPDeliveryMethodInvalidException.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPDeliveryMethodInvalidException.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPDeliveryMethodInvalidException.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPDeliveryMethodInvalidException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPTokenInvalidException.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPTokenInvalidException.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPTokenInvalidException.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/OTPTokenInvalidException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/ResetPasswordException.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/ResetPasswordException.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/ResetPasswordException.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/exception/ResetPasswordException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/BusinessDateFilter.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/BusinessDateFilter.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/BusinessDateFilter.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/BusinessDateFilter.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareAuthenticationFilter.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareAuthenticationFilter.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareAuthenticationFilter.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareAuthenticationFilter.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TwoFactorAuthenticationFilter.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TwoFactorAuthenticationFilter.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TwoFactorAuthenticationFilter.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TwoFactorAuthenticationFilter.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConstants.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/package-info.java
similarity index 56%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConstants.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/package-info.java
index feae3e2ff9..305e3cc3ba 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TwoFactorConstants.java
+++ 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/package-info.java
@@ -16,19 +16,21 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.fineract.infrastructure.security.constants;
 
-public final class TwoFactorConstants {
-
-    private TwoFactorConstants() {
-
-    }
-
-    public static final String ACCESSTOKEN_RESOURCE_NAME = 
"TWOFACTOR_ACCESSTOKEN";
-
-    public static final String SMS_DELIVERY_METHOD_NAME = "sms";
-    public static final String EMAIL_DELIVERY_METHOD_NAME = "email";
-
-    public static final String BYPASS_TWO_FACTOR_PERMISSION = 
"BYPASS_TWOFACTOR";
-
-}
+/**
+ * Fineract Security Module.
+ *
+ * This module contains all security-related components for Apache Fineract 
including:
+ * <ul>
+ * <li>Authentication APIs (HTTP Basic, OAuth2, OIDC Federation)</li>
+ * <li>Two-Factor Authentication (2FA/TFA)</li>
+ * <li>Security filters and converters</li>
+ * <li>User authentication services</li>
+ * <li>Security configuration</li>
+ * </ul>
+ *
+ * @see org.apache.fineract.infrastructure.security.api
+ * @see org.apache.fineract.infrastructure.security.config
+ * @see org.apache.fineract.infrastructure.security.service
+ */
+package org.apache.fineract.infrastructure.security;
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/AccessTokenGenerationService.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AccessTokenGenerationService.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/AccessTokenGenerationService.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AccessTokenGenerationService.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsService.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsService.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsService.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsService.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsServiceJdbc.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsServiceJdbc.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsServiceJdbc.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsServiceJdbc.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/CustomAuthenticationFailureHandler.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/CustomAuthenticationFailureHandler.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/CustomAuthenticationFailureHandler.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/CustomAuthenticationFailureHandler.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/RandomOTPGenerator.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/RandomOTPGenerator.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/RandomOTPGenerator.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/RandomOTPGenerator.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/SpringSecurityPlatformSecurityContext.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/SpringSecurityPlatformSecurityContext.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/SpringSecurityPlatformSecurityContext.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/SpringSecurityPlatformSecurityContext.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/SqlInjectionPreventerServiceImpl.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/SqlInjectionPreventerServiceImpl.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/SqlInjectionPreventerServiceImpl.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/SqlInjectionPreventerServiceImpl.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TenantAwareJpaPlatformUserDetailsService.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/TenantAwareJpaPlatformUserDetailsService.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TenantAwareJpaPlatformUserDetailsService.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/TenantAwareJpaPlatformUserDetailsService.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorConfigurationService.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorConfigurationService.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorConfigurationService.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorConfigurationService.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorService.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorService.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorService.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorService.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/UUIDAccessTokenGenerationService.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/UUIDAccessTokenGenerationService.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/UUIDAccessTokenGenerationService.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/UUIDAccessTokenGenerationService.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/vote/SelfServiceUserAuthorizationManager.java
 
b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/vote/SelfServiceUserAuthorizationManager.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/vote/SelfServiceUserAuthorizationManager.java
rename to 
fineract-security/src/main/java/org/apache/fineract/infrastructure/security/vote/SelfServiceUserAuthorizationManager.java
diff --git a/oauth2-tests/dependencies.gradle b/oauth2-tests/dependencies.gradle
index 448003e0be..2b94eb21ae 100644
--- a/oauth2-tests/dependencies.gradle
+++ b/oauth2-tests/dependencies.gradle
@@ -23,6 +23,7 @@ dependencies {
     tomcat 'org.apache.tomcat:tomcat:10.1.47@zip'
     testImplementation( 
files("$rootDir/fineract-provider/build/classes/java/main/"),
             project(path: ':fineract-provider', configuration: 
'runtimeElements'),
+            project(path: ':fineract-security', configuration: 
'runtimeElements'),
             'org.junit.jupiter:junit-jupiter-api',
             'org.bouncycastle:bcpkix-jdk18on',
             'org.bouncycastle:bcprov-jdk18on',
diff --git a/settings.gradle b/settings.gradle
index 1b6ac8d978..892be9e67f 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -48,6 +48,7 @@ buildCache {
 
 rootProject.name='fineract'
 include ':fineract-core'
+include ':fineract-security'
 include ':fineract-cob'
 include ':fineract-validation'
 include ':fineract-command'


Reply via email to