From cc2fb066d6435ee0f8109ba224aa95df21bdac7e Mon Sep 17 00:00:00 2001 From: StefanMoCoAt Date: Sat, 3 Jan 2026 22:54:49 +0100 Subject: [PATCH] chore(build): remove `ForbiddenAuthorizationHeaderTask` and related architecture guard tasks - Deleted `ForbiddenAuthorizationHeaderTask` and its registration in the build script to simplify the build process. - Removed associated architectural guard checks (`archGuardForbiddenAuthorizationHeader` and `archGuards`). --- build.gradle.kts | 2 +- .../at.mocode.architecture-guards.gradle.kts | 19 ------- .../ForbiddenAuthorizationHeaderTask.kt | 54 ------------------- 3 files changed, 1 insertion(+), 74 deletions(-) delete mode 100644 buildSrc/src/main/kotlin/at.mocode.architecture-guards.gradle.kts delete mode 100644 buildSrc/src/main/kotlin/at/mocode/gradle/ForbiddenAuthorizationHeaderTask.kt diff --git a/build.gradle.kts b/build.gradle.kts index 09e35b35..cdd928be 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -171,7 +171,7 @@ tasks.register("archGuardForbiddenAuthorizationHeader") { ".header(\"Authorization\"", "setHeader(\"Authorization\"", "headers[\"Authorization\"]", - "headers['Authorization']", + "headers[\'Authorization\']", ".header(HttpHeaders.Authorization", "header(HttpHeaders.Authorization", ) diff --git a/buildSrc/src/main/kotlin/at.mocode.architecture-guards.gradle.kts b/buildSrc/src/main/kotlin/at.mocode.architecture-guards.gradle.kts deleted file mode 100644 index a93009f8..00000000 --- a/buildSrc/src/main/kotlin/at.mocode.architecture-guards.gradle.kts +++ /dev/null @@ -1,19 +0,0 @@ -import at.mocode.gradle.ForbiddenAuthorizationHeaderTask -import at.mocode.gradle.FeatureIsolationTask - -tasks.register("archGuardForbiddenAuthorizationHeader") { - group = "verification" - description = "Fail build if code sets Authorization header manually." -} - -tasks.register("archGuardNoFeatureToFeatureDeps") { - group = "verification" - description = "Fail build if a :frontend:features:* module depends on another :frontend:features:* module" -} - -tasks.register("archGuards") { - group = "verification" - description = "Run all architecture guard checks" - dependsOn("archGuardForbiddenAuthorizationHeader") - dependsOn("archGuardNoFeatureToFeatureDeps") -} diff --git a/buildSrc/src/main/kotlin/at/mocode/gradle/ForbiddenAuthorizationHeaderTask.kt b/buildSrc/src/main/kotlin/at/mocode/gradle/ForbiddenAuthorizationHeaderTask.kt deleted file mode 100644 index eb9f5738..00000000 --- a/buildSrc/src/main/kotlin/at/mocode/gradle/ForbiddenAuthorizationHeaderTask.kt +++ /dev/null @@ -1,54 +0,0 @@ -package at.mocode.gradle - -import org.gradle.api.DefaultTask -import org.gradle.api.GradleException -import org.gradle.api.tasks.TaskAction -import java.io.File - -abstract class ForbiddenAuthorizationHeaderTask : DefaultTask() { - - @TaskAction - fun check() { - val forbiddenPatterns = listOf( - ".header(\"Authorization\"", - "setHeader(\"Authorization\"", - "headers[\"Authorization\"]", - "headers['Authorization']", - ".header(HttpHeaders.Authorization", - "header(HttpHeaders.Authorization", - ) - // Scope: Frontend-only enforcement. Backend/Test code is excluded. - val srcDirs = listOf("clients", "frontend") - val violations = mutableListOf() - - srcDirs.map { project.file(it) } - .filter { it.exists() } - .forEach { rootDir -> - rootDir.walkTopDown() - .filter { it.isFile && (it.extension == "kt" || it.extension == "kts") } - .forEach { f -> - val text = f.readText() - // Skip test sources - val path = f.invariantSeparatorsPath - val isTest = path.contains("/src/commonTest/") || - path.contains("/src/jsTest/") || - path.contains("/src/jvmTest/") || - path.contains("/src/test/") - if (!isTest && forbiddenPatterns.any { text.contains(it) }) { - violations += f - } - } - } - - if (violations.isNotEmpty()) { - val msg = buildString { - appendLine("Forbidden manual Authorization header usage found in:") - violations.take(50).forEach { appendLine(" - ${it.path}") } - if (violations.size > 50) appendLine(" ... and ${violations.size - 50} more files") - appendLine() - appendLine("Policy: Use DI-provided apiClient (Koin named \"apiClient\").") - } - throw GradleException(msg) - } - } -}