Skip to content

Instantly share code, notes, and snippets.

@amolbrid
Created February 23, 2015 17:43
Show Gist options
  • Save amolbrid/cb082f362d32afc33f57 to your computer and use it in GitHub Desktop.
Save amolbrid/cb082f362d32afc33f57 to your computer and use it in GitHub Desktop.
TokenAuthenticator with implicit Session
trait TokenAuthenticator {
def apiTokenAuth(implicit dbSession: Session) = new ApiTokenAuthenticator()
}
class ApiTokenAuthenticator(implicit val dbSession: Session, implicit val executionContext: ExecutionContext) extends HttpAuthenticator[User] {
override def getChallengeHeaders(httpRequest: HttpRequest): List[HttpHeader] =
`WWW-Authenticate`(HttpChallenge(scheme = "Token", realm = "Manta", params = Map.empty)) :: Nil
override def authenticate(credentials: Option[HttpCredentials], ctx: RequestContext): Future[Option[User]] =
Future.successful(
credentials.flatMap {
case GenericHttpCredentials(scheme, token, params) if scheme == "Token" => {
Users.authenticateWithToken(token)
}
case _ => None
}
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment