diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/RbacBeanConfig.java b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/RbacBeanConfig.java new file mode 100644 index 00000000..3cd5b0f1 --- /dev/null +++ b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/RbacBeanConfig.java @@ -0,0 +1,27 @@ +package com.cameleer3.server.app.config; + +import com.cameleer3.server.app.storage.PostgresClaimMappingRepository; +import com.cameleer3.server.core.rbac.ClaimMappingRepository; +import com.cameleer3.server.core.rbac.ClaimMappingService; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.core.JdbcTemplate; + +/** + * Creates the {@link ClaimMappingRepository} and {@link ClaimMappingService} beans. + *
+ * Follows the established pattern: core module plain class, app module bean config.
+ */
+@Configuration
+public class RbacBeanConfig {
+
+ @Bean
+ public ClaimMappingRepository claimMappingRepository(JdbcTemplate jdbcTemplate) {
+ return new PostgresClaimMappingRepository(jdbcTemplate);
+ }
+
+ @Bean
+ public ClaimMappingService claimMappingService() {
+ return new ClaimMappingService();
+ }
+}
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresClaimMappingRepository.java b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresClaimMappingRepository.java
new file mode 100644
index 00000000..89d0531a
--- /dev/null
+++ b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresClaimMappingRepository.java
@@ -0,0 +1,77 @@
+package com.cameleer3.server.app.storage;
+
+import com.cameleer3.server.core.rbac.ClaimMappingRepository;
+import com.cameleer3.server.core.rbac.ClaimMappingRule;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+public class PostgresClaimMappingRepository implements ClaimMappingRepository {
+
+ private final JdbcTemplate jdbc;
+
+ public PostgresClaimMappingRepository(JdbcTemplate jdbc) {
+ this.jdbc = jdbc;
+ }
+
+ @Override
+ public List