[SOLVED] Need Help with Creating/Binding an APIKey Environment

This is due to my lack of understanding with Guice, Scala, but here is the problem. I’ve got the rest of the code working including persisting all the user and login info in the Xodus DB locally as KVPs and Json combo. And now I am trying to add APIs endpoints based on the API Key authentication example in the document. So I first created

trait APIKeyEnv extends Env {
  type I = User
  type A = DummyAuthenticator


package models.services

import com.mohiva.play.silhouette.api.{ Logger, LoginInfo, RequestProvider }
import play.api.mvc.Request

import scala.concurrent.Future

class APIRequestProvider extends RequestProvider with Logger {
  def authenticate[B](request: Request[B]): Future[Option[LoginInfo]] = {
    Future.successful(request.headers.get("X-API-KEY") map { x =>
      LoginInfo(id, x)

  override def id = "api-key"

I have then added in modules/silhouetteModule.scala the following;

  def provideAPIKeyEnvironment(
    userService: UserService,
    authenticatorService: AuthenticatorService[DummyAuthenticator],
    apiKeyRequestProvider: APIRequestProvider,
    eventBus: EventBus
  ): Environment[APIKeyEnv] = {
    Environment[APIKeyEnv](  // Line 111 HERE

Now I get the following error when I compile this,

1) No implementation for com.mohiva.play.silhouette.api.services.AuthenticatorService<com.mohiva.play.silhouette.impl.authenticators.DummyAuthenticator> was bound.
  while locating com.mohiva.play.silhouette.api.services.AuthenticatorService<com.mohiva.play.silhouette.impl.authenticators.DummyAuthenticator>
    for the 2nd parameter of modules.SilhouetteModule.provideAPIKeyEnvironment(SilhouetteModule.scala:111)
  at modules.SilhouetteModule.provideAPIKeyEnvironment(SilhouetteModule.scala:111) (via modules: com.google.inject.util.Modules$OverrideModule -> modules.SilhouetteModule)

What puzzles me is that the there is an implementation of DummyAuthenticatorService so this message does not quite make sense to me.

The Line 111 is indicated above in the source.
I have not done any bind[] stuff for this in configure() part. I also assume that’s not needed as @provides does all of that.

Thank you in advance.

I was missing a

  def provideDummyAuthService(): AuthenticatorService[DummyAuthenticator] = new DummyAuthenticatorService()

After that it started to work and I can make API calls to my API endpoints.