def checkIdentity()

in play-v29/src/main/scala/com/gu/googleauth/actions.scala [123:142]


  def checkIdentity()(implicit request: RequestHeader, ec: ExecutionContext): EitherT[Future, Result, UserIdentity] = {
    def logWarn(desc:String, e: Throwable): Unit = {
      logger.warn(s"${getClass.getSimpleName} : failed-oauth-callback : $desc : '${e.getMessage}'", e)
    }

    GoogleAuth.validatedUserIdentity(authConfig).attemptT.leftSemiflatMap {
      case expiredJwt: ExpiredJwtException =>
        logWarn("resend-user-with-expired-anti-forgery-token-to-google", expiredJwt)
        startGoogleLogin()
      case e =>
        val desc = e match {
          case _: IllegalArgumentException => "anti-forgery-token-invalid"
          case _: Throwable => e.getClass.getSimpleName
        }
        logWarn(desc, e)
        Future.successful(redirectWithError(failureRedirectTarget, "Internal error, please check the logs for more information"))
    }.flatMap { userIdentity =>
      authConfig.twoFactorAuthChecker.map(requireTwoFactorAuthFor(userIdentity)).getOrElse(EitherT.pure(userIdentity))
    }
  }