Skip to content

Instantly share code, notes, and snippets.

@theanilpaudel
Created June 15, 2022 14:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save theanilpaudel/f136dac9b49ae8f0d779230ee4492b57 to your computer and use it in GitHub Desktop.
Save theanilpaudel/f136dac9b49ae8f0d779230ee4492b57 to your computer and use it in GitHub Desktop.
TokenInterceptor for passing token in every api request except /login
@Singleton
class TokenInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
var request = chain.request()
try {
if (request.url.encodedPath.contains("/login") && request.method.equals("POST")) {
return chain.proceed(request)
}
val user = FirebaseAuth.getInstance().currentUser ?: return chain.proceed(request)
val task: Task<GetTokenResult> = user.getIdToken(false)
val tokenResult = Tasks.await(task, 20, TimeUnit.SECONDS)
val token = tokenResult.token
request = request.newBuilder().addHeader("Authorization", "Bearer $token").build()
return chain.proceed(request)
} catch (e: Exception) {
return chain.proceed(request)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment