Skip to content

Commit

Permalink
Added Multi App Support
Browse files Browse the repository at this point in the history
  • Loading branch information
“oleksii-minaiev” committed Jul 22, 2024
1 parent 89730e5 commit edb1520
Show file tree
Hide file tree
Showing 8 changed files with 30 additions and 8 deletions.
7 changes: 6 additions & 1 deletion android/src/main/java/com/frontegg/android/FronteggApp.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ class FronteggApp private constructor(
val context: Context,
var baseUrl: String,
var clientId: String,
var applicationId: String?,
val isEmbeddedMode: Boolean = true,
val regions: List<RegionConfig> = listOf(),
val selectedRegion: RegionConfig? = null,
Expand All @@ -27,7 +28,7 @@ class FronteggApp private constructor(

val credentialManager: CredentialManager = CredentialManager(context)
val auth: FronteggAuth =
FronteggAuth(baseUrl, clientId, credentialManager, regions, selectedRegion)
FronteggAuth(baseUrl, clientId, applicationId, credentialManager, regions, selectedRegion)
val packageName: String = context.packageName

companion object {
Expand All @@ -47,6 +48,7 @@ class FronteggApp private constructor(
public fun init(
fronteggDomain: String,
clientId: String,
applicationId: String? = null,
context: Context,
useAssetsLinks: Boolean = false,
useChromeCustomTabs: Boolean = false
Expand All @@ -62,6 +64,7 @@ class FronteggApp private constructor(
context = context,
baseUrl = baseUrl,
clientId = clientId,
applicationId = applicationId,
isEmbeddedMode = isEmbeddedMode,
useAssetsLinks = useAssetsLinks,
useChromeCustomTabs = useChromeCustomTabs
Expand All @@ -85,6 +88,7 @@ class FronteggApp private constructor(
context = context,
baseUrl = regionConfig.baseUrl,
clientId = regionConfig.clientId,
applicationId = regionConfig.applicationId,
isEmbeddedMode = isEmbeddedMode,
regions = regions,
selectedRegion = regionConfig,
Expand All @@ -99,6 +103,7 @@ class FronteggApp private constructor(
context = context,
baseUrl = "",
clientId = "",
applicationId = null,
isEmbeddedMode = isEmbeddedMode,
regions = regions,
useAssetsLinks = useAssetsLinks,
Expand Down
5 changes: 3 additions & 2 deletions android/src/main/java/com/frontegg/android/FronteggAuth.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import kotlin.concurrent.schedule
class FronteggAuth(
var baseUrl: String,
var clientId: String,

var applicationId: String?,
val credentialManager: CredentialManager,
val regions: List<RegionConfig>,
var selectedRegion: RegionConfig?
Expand Down Expand Up @@ -71,7 +71,7 @@ class FronteggAuth(

val api: Api
get() = (if (this._api == null) {
this._api = Api(this.baseUrl, this.clientId, credentialManager)
this._api = Api(this.baseUrl, this.applicationId, credentialManager)
this._api
} else {
this._api
Expand All @@ -83,6 +83,7 @@ class FronteggAuth(

this.baseUrl = region.baseUrl
this.clientId = region.clientId
this.applicationId = region.applicationId

this.initializeSubscriptions()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
package com.frontegg.android.regions

class RegionConfig(val key: String, baseUrl: String, val clientId: String) {
class RegionConfig(
val key: String,
baseUrl: String,
val clientId: String,
val applicationId: String?
) {
val baseUrl: String

init {

this.baseUrl = if (baseUrl.startsWith("http")) {
Expand Down
7 changes: 6 additions & 1 deletion android/src/main/java/com/frontegg/android/services/Api.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import java.lang.Exception

open class Api(
private var baseUrl: String,
private var clientId: String,
private var applicationId: String?,
private var credentialManager: CredentialManager
) {
private var httpClient: OkHttpClient = OkHttpClient()
Expand All @@ -39,6 +39,11 @@ open class Api(
Pair("Origin", this.baseUrl)
)

val applicationId = this.applicationId
if (applicationId != null) {
headers["frontegg-requested-application-id"] = applicationId
}

additionalHeaders.forEach {
headers[it.key] = it.value
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@ import android.net.Uri
import android.util.Log
import com.frontegg.android.FronteggApp
import java.security.MessageDigest
import java.util.*
import java.util.Base64

class AuthorizeUrlGenerator {
companion object {
private val TAG = AuthorizeUrlGenerator::class.java.simpleName
}

private var clientId: String = FronteggApp.getInstance().clientId
private var applicationId: String? = FronteggApp.getInstance().applicationId
private var baseUrl: String = FronteggApp.getInstance().baseUrl

private fun createRandomString(length: Int = 16): String {
Expand Down Expand Up @@ -44,7 +45,7 @@ class AuthorizeUrlGenerator {
val credentialManager = FronteggApp.getInstance().credentialManager


val codeVerifier:String = if (preserveCodeVerifier == true) {
val codeVerifier: String = if (preserveCodeVerifier == true) {
credentialManager.getCodeVerifier()!!
} else {
val code = createRandomString()
Expand All @@ -60,7 +61,7 @@ class AuthorizeUrlGenerator {
.encodedPath(baseUrl)
.appendEncodedPath("oauth/authorize")
.appendQueryParameter("response_type", "code")
.appendQueryParameter("client_id", clientId)
.appendQueryParameter("client_id", applicationId ?: clientId)
.appendQueryParameter("scope", "openid email profile")
.appendQueryParameter("redirect_uri", redirectUrl)
.appendQueryParameter("code_challenge", codeChallenge)
Expand Down
2 changes: 2 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ plugins {

def fronteggDomain = "auth.davidantoon.me"
def fronteggClientId = "b6adfe4c-d695-4c04-b95f-3ec9fd0c6cca"
def fronteggApplicationId = "16407b9a-5b6c-43de-9f58-6a1d1e0077f8"

android {
namespace 'com.frontegg.demo'
Expand All @@ -28,6 +29,7 @@ android {

buildConfigField "String", 'FRONTEGG_DOMAIN', "\"$fronteggDomain\""
buildConfigField "String", 'FRONTEGG_CLIENT_ID', "\"$fronteggClientId\""
buildConfigField "String", 'FRONTEGG_APPLOCATION_ID', "\"$fronteggApplicationId\""
}

buildTypes {
Expand Down
1 change: 1 addition & 0 deletions app/src/main/java/com/frontegg/demo/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class App : Application() {
FronteggApp.init(
BuildConfig.FRONTEGG_DOMAIN,
BuildConfig.FRONTEGG_CLIENT_ID,
BuildConfig.FRONTEGG_APPLOCATION_ID,
this,
)
}
Expand Down
1 change: 1 addition & 0 deletions embedded/src/main/java/com/frontegg/demo/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ class App : Application() {
FronteggApp.init(
BuildConfig.FRONTEGG_DOMAIN,
BuildConfig.FRONTEGG_CLIENT_ID,
BuildConfig.FRONTEGG_APPLICATION_ID,
this,
useAssetsLinks = true,
useChromeCustomTabs = true
Expand Down

0 comments on commit edb1520

Please sign in to comment.