diff --git a/auth/src/main/java/eu/project/auth/authz/AuthzManager.kt b/auth/src/main/java/eu/project/auth/authz/AuthzManager.kt new file mode 100644 index 0000000..00b12e7 --- /dev/null +++ b/auth/src/main/java/eu/project/auth/authz/AuthzManager.kt @@ -0,0 +1,11 @@ +package eu.project.auth.authz + +import eu.project.auth.token.AccessToken + +/** + * Provides access tokens. + */ +interface AuthzManager { + + fun getAccessToken(): AccessToken? +} \ No newline at end of file diff --git a/auth/src/main/java/eu/project/auth/authz/AuthzManagerImpl.kt b/auth/src/main/java/eu/project/auth/authz/AuthzManagerImpl.kt new file mode 100644 index 0000000..e70f895 --- /dev/null +++ b/auth/src/main/java/eu/project/auth/authz/AuthzManagerImpl.kt @@ -0,0 +1,21 @@ +package eu.project.auth.authz + +import eu.project.auth.client.SupabaseClient +import eu.project.auth.token.AccessToken +import io.github.jan.supabase.auth.auth +import javax.inject.Inject + +/** + * Implementation of `AuthzManager` that uses `SupabaseClient` to retrieve access token. + */ +internal class AuthzManagerImpl @Inject constructor(supabaseClient: SupabaseClient) : AuthzManager { + + private val client = supabaseClient.client + + override fun getAccessToken(): AccessToken? { + + // try to retrieve current access token, if it's null, return null + val rawAccessToken = client.auth.currentAccessTokenOrNull() ?: return null + return AccessToken(rawAccessToken) + } +} \ No newline at end of file diff --git a/auth/src/main/java/eu/project/auth/module/AuthModule.kt b/auth/src/main/java/eu/project/auth/module/AuthModule.kt index a8e19a9..a61bc9f 100644 --- a/auth/src/main/java/eu/project/auth/module/AuthModule.kt +++ b/auth/src/main/java/eu/project/auth/module/AuthModule.kt @@ -8,6 +8,8 @@ import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import eu.project.auth.authn.AuthnManager import eu.project.auth.authn.AuthnManagerImpl +import eu.project.auth.authz.AuthzManager +import eu.project.auth.authz.AuthzManagerImpl import eu.project.auth.client.SupabaseClient import eu.project.auth.credentialManager.GoogleCredentialManager import eu.project.auth.credentialManager.GoogleCredentialManagerImpl @@ -28,6 +30,13 @@ internal class AuthModule { googleCredentialManager = googleCredentialManager ) + @Provides + @Singleton + fun provideAuthzManager( + supabaseClient: SupabaseClient + ): AuthzManager = + AuthzManagerImpl(supabaseClient = supabaseClient) + @Provides @Singleton fun provideGoogleCredentialManager(