(auth): Add proxy authentication WebView for server login

This commit is contained in:
cogwheel
2025-12-18 11:40:16 +05:30
parent 5b91616e35
commit 9da9f9e2b3
60 changed files with 1453 additions and 22 deletions

View File

@@ -4,6 +4,7 @@ import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import android.os.Build
import android.os.Bundle
import android.webkit.CookieManager
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsControllerCompat
@@ -35,6 +36,41 @@ class MainActivity : FlutterActivity() {
methodChannel = io.flutter.plugin.common.MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
// Setup cookie manager channel for WebView cookie access
val cookieChannel = io.flutter.plugin.common.MethodChannel(
flutterEngine.dartExecutor.binaryMessenger,
"com.conduit.app/cookies"
)
cookieChannel.setMethodCallHandler { call, result ->
if (call.method == "getCookies") {
val url = call.argument<String>("url")
if (url == null) {
result.error("INVALID_ARGS", "Invalid URL", null)
return@setMethodCallHandler
}
// Get cookies from Android's CookieManager (shared with WebView)
val cookieManager = CookieManager.getInstance()
val cookieString = cookieManager.getCookie(url)
val cookieMap = mutableMapOf<String, String>()
if (cookieString != null) {
// Parse cookie string: "name1=value1; name2=value2"
cookieString.split(";").forEach { cookie ->
val parts = cookie.trim().split("=", limit = 2)
if (parts.size == 2) {
cookieMap[parts[0].trim()] = parts[1].trim()
}
}
}
result.success(cookieMap)
} else {
result.notImplemented()
}
}
// Check if started with context
handleIntent(intent)
}

View File

@@ -14,3 +14,4 @@
</vector>

View File

@@ -11,3 +11,4 @@
</vector>

View File

@@ -12,3 +12,4 @@
</vector>

View File

@@ -12,3 +12,4 @@
</vector>

View File

@@ -11,3 +11,4 @@
</vector>

View File

@@ -11,3 +11,4 @@
android:pathData="M7,18h2V6H7v12zM11,22h2V2h-2v20zM3,14h2v-4H3v4zM15,18h2V6h-2v12zM19,10v4h2v-4h-2z" />
</vector>

View File

@@ -7,3 +7,4 @@
</shape>

View File

@@ -10,3 +10,4 @@
</item>
</ripple>

View File

@@ -10,3 +10,4 @@
</ripple>

View File

@@ -11,3 +11,4 @@
</ripple>

View File

@@ -11,3 +11,4 @@
</ripple>

View File

@@ -12,3 +12,4 @@
</vector>

View File

@@ -14,3 +14,4 @@
</vector>

View File

@@ -11,3 +11,4 @@
</vector>

View File

@@ -12,3 +12,4 @@
</vector>

View File

@@ -12,3 +12,4 @@
</vector>

View File

@@ -11,3 +11,4 @@
</vector>

View File

@@ -11,3 +11,4 @@
android:pathData="M7,18h2V6H7v12zM11,22h2V2h-2v20zM3,14h2v-4H3v4zM15,18h2V6h-2v12zM19,10v4h2v-4h-2z" />
</vector>

View File

@@ -7,3 +7,4 @@
</shape>

View File

@@ -10,3 +10,4 @@
</item>
</ripple>

View File

@@ -10,3 +10,4 @@
</ripple>

View File

@@ -11,3 +11,4 @@
</ripple>

View File

@@ -11,3 +11,4 @@
</ripple>

View File

@@ -11,3 +11,4 @@
</ripple>

View File

@@ -53,3 +53,4 @@
</layer-list>

View File

@@ -129,3 +129,4 @@
</LinearLayout>

View File

@@ -30,3 +30,4 @@
</resources>

View File

@@ -9,3 +9,4 @@
</resources>

View File

@@ -30,3 +30,4 @@
</resources>

View File

@@ -9,3 +9,4 @@
</resources>

View File

@@ -13,3 +13,4 @@
</resources>

View File

@@ -17,3 +17,4 @@
android:widgetFeatures="reconfigurable" />